在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()
方法之一。 请记住,必须先对数组进行排序。