在Java中,如何检测一个数组中是否包含某一个数据?
public static final String[] VALUES = new String[] {""AB"",""BC"",""CD"",""AE""};
又有变量
String s;
现在我需要检测数组VALUES中是否包含有变量s的值。" 展开
在Java中,检测一个数组是否包含某一个数据,通常有四种方法:
(1)for循环
(2)转换为List,调用Arrays.asList(arr).contains方法
(3)使用Set
(4)使用Arrays.binarySearch()方法
下面为上述四种方法的具体代码实现:
1、使用for循环
public static boolean useLoop(String[] arr, String targetValue) {
for (String s : arr) {
if (s.equals(targetValue))
return true;
}
return false;
}
2、转换为List,调用Arrays.asList(arr).contains方法
public static boolean useList(String[] arr, String targetValue) {
return Arrays.asList(arr).contains(targetValue);
}
3、使用Set
public static boolean useSet(String[] arr, String targetValue) {
Set<String> set = new HashSet<String>(Arrays.asList(arr));
return set.contains(targetValue);
}
4、使用Arrays.binarySearch()方法
特别说明:binarySearch()二分查找 仅适用于 有序数组,如果不是有序数组,则报异常
public static boolean useArraysBinarySearch(String[] arr, String targetValue) {
int a = Arrays.binarySearch(arr, targetValue);
if (a > 0) {
return true;
} else {
return false;
} }
扩展资料:
Java种List列表的contains方法:
该方法是通过遍历集合中的每一个元素并用equals方法比较是否存在指定的元素。
public boolean contains(Object o) {
Iterator<E> it = iterator();
if (o==null) {
while (it.hasNext())
if (it.next()==null)
return true;
} else {
while (it.hasNext())
if (o.equals(it.next()))
return true;
}
return false;
}
参考资料来源:Java官网-API-Arrays
参考资料来源:Java官网-API-Interface List
Arrays.asList(yourArray).contains(yourValue)
但这并不适用于基本数据类型的数组。
在Java8之后,你可以使用Stream来检测int,double,long类型的数组是否包含某个数值。(分别用IntStream, DoubleStream和LongStream),例如:
int[] a = {1,2,3,4};
boolean contains = IntStream.of(a).anyMatch(x -> x == 4);
对于数组的一些操作,你可以上秒秒学了解相关的知识。