在Java中查找数组中的元素

Java是否有内置函数允许我线性搜索数组中的元素,还是只需要使用for循环?

列表有一个contains方法,所以你应该能够做到:

 Arrays.asList(yourArray).contains(yourObject); 

警告:这可能不符合您(或我)的期望,请参阅下面的Tom的评论。

您可能需要考虑使用Collection实现而不是flat数组。

Collection接口定义一个contains(Object o)方法,该方法返回true / false

ArrayList实现定义了一个indexOf(Object o) ,它提供了一个索引,但该方法不在所有集合实现上。

这两种方法都需要正确实现equals()方法,并且您可能需要正确实现的hashCode()方法,以防您使用基于散列的Collection (例如HashSet )。

使用Java 8,您可以执行以下操作:

 int[] haystack = {1, 2, 3}; int needle = 3; boolean found = Arrays.stream(haystack).anyMatch(x -> x == needle); 

你需要这样做

 boolean found = Arrays.stream(haystack).anyMatch(x -> needle.equals(x)); 

如果你正在使用对象。

使用for循环。 数组中没有任何内置function。 或者切换到java.util Collection类。

您可以使用许多Arrays.binarySearch()方法之一。 请记住,必须先对数组进行排序。