Java是否有内置函数允许我线性搜索数组中的元素,还是只需要使用for循环?
答案 0 :(得分:17)
列表有contains
方法,因此您应该可以:
Arrays.asList(yourArray).contains(yourObject);
警告:这可能不符合您(或我)的期望,请参阅下面的Tom的评论。
答案 1 :(得分:10)
您可能需要考虑使用Collection
实现而不是平面数组。
Collection
界面定义了contains(Object o)
方法,该方法返回true
/ false
。
ArrayList
实现定义了一个indexOf(Object o)
,它提供了一个索引,但该方法不适用于所有集合实现。
这两种方法都需要正确实现equals()
方法,并且您可能需要正确实现的hashCode()
方法,以防您使用基于散列的Collection
(例如{{1} }})。
答案 2 :(得分:10)
使用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));
如果您正在使用对象。
答案 3 :(得分:6)
使用for循环。数组中没有任何内置功能。或者切换到java.util Collection类。
答案 4 :(得分:4)
您可以使用众多Arrays.binarySearch()
方法中的一种。请记住,必须先对数组进行排序。