在Java中查找数组中的元素

时间:2010-08-01 23:55:02

标签: java arrays

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

5 个答案:

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