怎么有效地检查数组是否包含Java中的值
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍怎么有效地检查数组是否包含Java中的值,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 检查数组是否包含值的四种不同方法1) 使用List:public s
千家信息网最后更新 2026年10月31日怎么有效地检查数组是否包含Java中的值
这篇文章主要介绍怎么有效地检查数组是否包含Java中的值,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
1. 检查数组是否包含值的四种不同方法
1) 使用List:
public static boolean useList(String[] arr, String targetValue) { return Arrays.asList(arr).contains(targetValue);}2) 使用 Set:
public static boolean useSet(String[] arr, String targetValue) { Set set = new HashSet(Arrays.asList(arr)); return set.contains(targetValue);} 3)使用一个简单的循环:
public static boolean useArraysBinarySearch(String[] arr, String targetValue) { int a = Arrays.binarySearch(arr, targetValue); if(a > 0) return true; elsereturn false;}4) 使用 Arrays.binarySearch():
public static boolean useArraysBinarySearch(String[] arr, String targetValue) { int a = Arrays.binarySearch(arr, targetValue); if(a > 0) return true; elsereturn false;}2. 时间复杂度
可以使用以下代码来测量大致的时间成本。基本思想是搜索大小为 5、1k、10k 的数组。该方法可能不精确,但其思想清晰而简单。
public static void main(String[] args) { String[] arr = new String[] { "CD", "BC", "EF", "DE", "AB"}; //use listlong startTime = System.nanoTime(); for (int i = 0; i < 100000; i++) { useList(arr, "A"); } long endTime = System.nanoTime(); long duration = endTime - startTime; System.out.println("useList: " + duration / 1000000); //use set startTime = System.nanoTime(); for (int i = 0; i < 100000; i++) { useSet(arr, "A"); } endTime = System.nanoTime(); duration = endTime - startTime; System.out.println("useSet: " + duration / 1000000); //use loop startTime = System.nanoTime(); for (int i = 0; i < 100000; i++) { useLoop(arr, "A"); } endTime = System.nanoTime(); duration = endTime - startTime; System.out.println("useLoop: " + duration / 1000000);结果:
useList: 13useSet: 72useLoop: 5使用更大的数组 (1k):
String[] arr = new String[1000]; Random s = new Random();for(int i=0; i< 1000; i++){ arr[i] = String.valueOf(s.nextInt());}结果:
useList: 112useSet: 2055useLoop: 99useArrayBinary: 12
使用更大的数组(10k):
String[] arr = new String[10000]; Random s = new Random();for(int i=0; i< 10000; i++){ arr[i] = String.valueOf(s.nextInt());}结果:
useList: 1590useSet: 23819useLoop: 1526useArrayBinary: 12显然,使用简单的循环方法比使用任何集合更有效。很多开发人员使用第一种方法,但效率低下。将数组推送到另一个集合需要在对集合类型执行任何操作之前遍历所有元素以读取它们。
如果使用 Arrays.binarySearch() 方法,则必须对数组进行排序。在这种情况下,数组未排序,因此不应使用它。
实际上,如果您需要有效地检查某个值是否包含在某个数组/集合中,排序列表或树可以在 O(log(n)) 中完成,或者 hashset 可以在 O(1) 中完成。
以上是"怎么有效地检查数组是否包含Java中的值"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
数组
方法
有效
检查
结果
排序
内容
思想
时间
篇文章
循环
不同
低下
复杂
精确
人员
代码
价值
元素
兴趣
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
咖啡网
瑰夏咖啡
美国互联网保险保险科技
互联网 科技
互联网科技革命
南京欣网互联网科技
互联网科技宣传片
太原新华互联网科技学校怎么样
北京三清互联网科技
互联网科技博主是什么意思
常德市电业局互联网科技部
互联网科技有哪些公司
科技赋能视角下互联网保险发展
国大互联网教育科技有限公司薪资
风投北京互联网科技
信承诺互联网科技有限公司
云南互联网科技学费
上海互联网科技园景观
青岛互联网科技园
优雇互联网科技有限公司
互联网科技未来
奇酷互联网络科技
互联网科技热点资讯
互联网媒体平台算高科技产业
互联网新科技动漫ppt素材
特约风豹互联网科技为什么扣费
互联网科技公司营业执照怎么办理
国产互联网科技公司
安徽零酒互联网科技有限公司
数字互联网科技有限公司