详解Java中数组判断元素存在几种方式比较
Java 中数组判断元素存在的多种方式比较 在 Java 中,判断数组中是否存在某个元素是非常常见的操作。该操作可以通过多种方式实现,本文将详细介绍四种常见的方法。 1. 通过将数组转换成 List,然后使用 List 中的 contains 进行判断 该方法是将数组转换成 List,然后使用 List 中的 contains 方法来判断元素是否存在。该方法的实现如下: ```java public static boolean useList(String[] arr, String containValue) { return Arrays.asList(arr).contains(containValue); } ``` 需要注意的是,Arrays.asList 方法返回的 List 并不是 java.util.ArrayList,而是 java.util.Arrays.ArrayList,其中 java.util.Arrays.ArrayList 中不能对数组的长度进行扩容操作,这个尤为重要。contains 方法的实现如下: ```java @Override public boolean contains(Object o) { return indexOf(o) != -1; } @Override public int indexOf(Object o) { // 获取元素 E[] a = this.a; // 判断空 if (o == null) { // 循环判断 for (int i = 0; i < a.length; i++) // 如果元素为 null if (a[i] == null) // 则返回 return i; } else { // 如果其不为空 for (int i = 0; i < a.length; i++) // 判断元素与 a[i] 是否相等 if (o.equals(a[i])) // 相等返回 i return i; } // 否则返回 -1 return -1; } ``` 2. 使用 Set 进行实现判断是否存在 该方法是将数组转换成 Set,然后使用 Set 中的 contains 方法来判断元素是否存在。该方法的实现如下: ```java public static boolean useSet(String[] arr, String containValue) { return new HashSet<>(Arrays.asList(arr)).contains(containValue); } ``` 原理是将数组 -> List -> Set 使用 Set 进行比较,源码通过调用 map 的 containsKey 实现的,而 HashMap 中则是通过遍历 Hash 表中的 key 实现的: ```java public boolean contains(Object o) { return map.containsKey(o); } ``` 3. 使用循环来实现 该方法是自己编写一个循环来判断元素是否存在。该方法的实现如下: ```java public static boolean useLoop(String[] arr, String containValue) { // 判断是否为空 if (arr == null || arr.length == 0) { return false; } for (int i = 0; i < arr.length; i++) { // all null if (containValue != null && containValue.equals(arr[i])) { return true; } else if (arr[i] == null) { return true; } } return false; } ``` 4. 使用 org.apache.commons.lang3.ArrayUtils 中的 contains 方法来实现 该方法是使用 org.apache.commons.lang3.ArrayUtils 中的 contains 方法来判断元素是否存在。该方法的实现如下: ```java public static boolean useUtils(String[] arr, String containValue) { return ArrayUtils.contains(arr, containValue); } ``` 具体实现源码: ```java public static boolean contains(final Object[] array, final Object objectToFind) { // 调用 indexOf 进行判断位置 return indexOf(array, objectToFind) != INDEX_NOT_FOUND; } public static int indexOf(final Object[] array, final Object objectToFind, int startIndex) { // 判定 // ... } ``` Java 中数组判断元素存在的四种方式分别是通过将数组转换成 List,然后使用 List 中的 contains 进行判断、使用 Set 进行实现判断是否存在、使用循环来实现、使用 org.apache.commons.lang3.ArrayUtils 中的 contains 方法来实现。每种方法都有其优缺,选择哪种方法取决于实际情况。
- 粉丝: 6
- 资源: 950
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 莱斯衰落信道下面向虚拟现实应用的无人机 MEC 系统的延迟优化matlab代码.rar
- 利用MATLAB中的固定铂工具箱在定点扩展卡尔曼滤波器仿真.rar
- 利用测量参数的相关性改进的扩展卡尔曼滤波器的Matlab实现.rar
- 历元基音估计Matlab代码.rar
- 利用六种(SO2、NO2、CO、O3、PM10、PM2.5)污染物浓度数据计算空气质量AQI值 Matlab代码.rar
- 粒子滤波算法Matlab实现.rar
- 路径和轨迹规划:同时定位和建图:(EKF,FAST) 和控制系统:(LQG,MPC)Matlab代码.rar
- 模拟高斯光束的三维光强分布,以及峰值分布 matlab代码.rar
- 美国五大湖多边形Matlab代码.rar
- 凸轮搬运机械手装置3D图纸和工程图机械结构设计图纸和其它技术资料和技术方案非常好100%好用.zip
- 漂移扩散不足以作为决策模型 matlab代码.rar
- 漂移扩散近似中基本半导体方程的模拟器工具 matlab代码.rar
- yolo-world官方代码,预测 + 训练
- 华为CD32的键盘指纹驱动
- week4_answer.py
- flask+mysql+html+CSS原生sql实现的超市配货管理