怎么有效地检查数组是否包含Java中的值
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍怎么有效地检查数组是否包含Java中的值,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 检查数组是否包含值的四种不同方法1) 使用List:public s
千家信息网最后更新 2025年11月07日怎么有效地检查数组是否包含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安全错误
数据库的锁怎样保障安全
松江区专业性网络技术服务保障
江苏军工卫星授时服务器云主机
中国网络技术缺点
地产软件开发方案
全球多少大型服务器
网络安全画报不要文字
网络安全防守作战指南
北京帅鸟网络技术
网络安全宣传知识竞赛报道
数据库相关的软件
承德网络技术哪个好
imp到数据库排除某张表
远程服务器多用户访问
甘肃广电5g网络安全吗
政府机关的网络安全分析
韩国文献 数据库
苹果5s无线网络安全提示
大华监控服务器安装视频教程
视屏网站 数据库
数据库技术及应用考试答案
网商之家软件开发
服务器管理口与普通接口
河南网络安全审计硬件商家
江苏省政务服务网数据库
ios 检测软件开发
互联网科技国企有哪些
南京博风采网络技术怎么样
校园网络安全的手抄报初二
广州嵌入式软件开发哪家实惠
服务器的妈妈可以喝鱼腥草