Java中检查值是否存在于数组中的4种详细方法

 更新时间:2023年08月24日 11:09:56   作者:Smile sea breeze  
这篇文章主要给大家介绍了关于Java中检查值是否存在于数组中的4种详细方法,相信大家在操作Java的时候经常会要检查一个数组(无序)是否包含一个特定的值,需要的朋友可以参考下

1.介绍

在 Java 中,有许多方法可以检查此数组中是否存在特定元素。

  • 使用线性搜索方法
  • 使用二进制搜索方法
  • 使用 List.contains() 方法
  • 使用 Stream.anyMatch() 方法

2.方法

1)使用线性搜索方法

时间复杂度:O(N) 辅助空间:O(1)

for (int element : arr) {
    if (element == toCheckValue) {
        return true;
    }
}
public class T1 {
    private static void check(int[] arr, int toCheckValue)
    {
        boolean test = false;
        for (int element : arr) {
            if (element == toCheckValue) {
                test = true;
                break;
            }
        }
        System.out.println("Is " + toCheckValue
                + " present in the array: " + test);
    }
    public static void main(String[] args) {
        int arr[] = { 5, 1, 1, 9, 7, 2, 6, 10 };
        int toCheckValue = 7;
        System.out.println("Array: "+ Arrays.toString(arr));
        check(arr, toCheckValue);
    }
}

Array: [5, 1, 1, 9, 7, 2, 6, 10]
Is 7 present in the array: true

2)使用二进制搜索方法

通过将搜索间隔重复分成两半来搜索排序数组。从覆盖整个数组的区间开始。如果搜索关键字的值小于区间中间的项,则将区间缩小到下半部分。否则,将其缩小到上半部分。反复检查,直到找到值或区间为空。
public static int binarySearch(data_type arr, data_type key)时间复杂度:O(nlog(n)) 辅助空间:O(1)

public class T1 {
    private static void check(int[] arr, int toCheckValue) {
        Arrays.sort(arr);
        int res = Arrays.binarySearch(arr, toCheckValue);
        boolean test = res >= 0 ? true : false;
        System.out.println("Is " + toCheckValue
                + " present in the array: " + test);
    }
    public static void main(String[] args) {
        int arr[] = { 5, 1, 1, 9, 7, 2, 6, 10 };
        int toCheckValue = 7;
        System.out.println("Array: "+ Arrays.toString(arr));
        check(arr, toCheckValue);
    }
}

Array: [5, 1, 1, 9, 7, 2, 6, 10]
Is 7 present in the array: true

3)使用 List.contains() 方法

Java 中的 List contains() 方法用于检查指定元素是否存在于给定列表中。
public boolean contains(Object)

public class T1 {
    private static void check(Integer[] arr, int toCheckValue) {
        boolean test= Arrays.asList(arr) .contains(toCheckValue);
        System.out.println("Is " + toCheckValue
                + " present in the array: " + test);
    }
    public static void main(String[] args) {
        Integer arr[] = { 5, 1, 1, 9, 7, 2, 6, 10 };
        int toCheckValue = 7;
        System.out.println("Array: "+ Arrays.toString(arr));
        check(arr, toCheckValue);
    }
}

Array: [5, 1, 1, 9, 7, 2, 6, 10]
Is 7 present in the array: true

4)使用 Stream.anyMatch() 方法

boolean anyMatch(Predicate<T> predicate)T 是输入类型
如果有任何元素,则该函数返回 true , 否则为假。

public class T1 {
    private static void check(int[] arr, int toCheckValue)
    {
        // 检查指定元素是否 
        // 是否存在于数组中 
        // 使用 anyMatch() 方法
        boolean test
                = IntStream.of(arr)
                .anyMatch(x -> x == toCheckValue);
        System.out.println("Is " + toCheckValue
                + " present in the array: " + test);
    }
    public static void main(String[] args) {
        int arr[] = { 5, 1, 1, 9, 7, 2, 6, 10 };
        int toCheckValue = 7;
        System.out.println("Array: "+ Arrays.toString(arr));
        check(arr, toCheckValue);
    }
}

Array: [5, 1, 1, 9, 7, 2, 6, 10]
Is 7 present in the array: true

总结

到此这篇关于Java中检查值是否存在于数组中的4种详细方法的文章就介绍到这了,更多相关Java检查值是否在数组内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringMVC Tomcat控制台乱码问题解决方案

    SpringMVC Tomcat控制台乱码问题解决方案

    这篇文章主要介绍了SpringMVC Tomcat控制台乱码问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • java 8 lambda表达式list操作分组、过滤、求和、最值、排序、去重代码详解

    java 8 lambda表达式list操作分组、过滤、求和、最值、排序、去重代码详解

    java8的lambda表达式提供了一些方便list操作的方法,主要涵盖分组、过滤、求和、最值、排序、去重,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • 浅谈JAVA8给我带了什么——流的概念和收集器

    浅谈JAVA8给我带了什么——流的概念和收集器

    这篇文章主要介绍了JAVA8流的概念和收集器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Java花式解决'分割回文串 ii'问题详解

    Java花式解决'分割回文串 ii'问题详解

    最学习动态规划思想的路上,遇见了‘分割回文串问题’,如临大敌啊,题目听起来蛮简单,思考起来却也没那么容易,本文将为大家详细介绍几种解决分割回文串 ii问题的办法,需要的可以参考一下
    2021-12-12
  • 浅谈一下Servlet的定义以及运行原理

    浅谈一下Servlet的定义以及运行原理

    相信有很多刚入行的朋友会疑惑Servlet到底是个什么意思,那么这篇文章就来浅谈一下到底什么是Servlet,以及Servlet的原理与如何写一个Servlet,,需要的朋友可以参考下
    2023-03-03
  • SpringBoot YAML 配置读取机制 + 数据库自动初始化原理解析

    SpringBoot YAML 配置读取机制 + 数据库自动初始化原理解析

    本文介绍了SpringBoot中YAML配置的读取流程,包括配置文件加载、配置绑定和容器管理,还详细讲解了数据库自动初始化原理,感兴趣的朋友跟随小编一起看看吧
    2025-05-05
  • 一篇文章带你了解XGBoost算法

    一篇文章带你了解XGBoost算法

    XGBoost全名叫(eXtreme Gradient Boosting)极端梯度提升,经常被用在一些比赛中,其效果显著。它是大规模并行boosted tree的工具,它是目前最快最好的开源boosted tree工具包
    2021-08-08
  • Windows系统下JDK版本一键、自动切换工具图文教程

    Windows系统下JDK版本一键、自动切换工具图文教程

    这篇文章主要介绍了Windows系统下JDK版本一键、自动切换工具的相关资料,通过批处理脚本动态管理环境变量,支持JDK8-100版本,简化多项目开发,提升效率并减少配置错误,需要的朋友可以参考下
    2025-06-06
  • Map按单个或多个Value排序当Value相同时按Key排序

    Map按单个或多个Value排序当Value相同时按Key排序

    Map可以先按照value进行排序,然后按照key进行排序。 或者先按照key进行排序,然后按照value进行排序,这样操作都行,这篇文章主要介绍了Map按单个或多个Value排序,当Value相同时按Key排序,需要的朋友可以参考下
    2023-02-02
  • springboot如何设置请求参数长度和文件大小限制

    springboot如何设置请求参数长度和文件大小限制

    这篇文章主要介绍了springboot如何设置请求参数长度和文件大小限制,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09

最新评论