代码之家  ›  专栏  ›  技术社区  ›  Casebash

在Java中查找数组中的元素

  •  19
  • Casebash  · 技术社区  · 15 年前

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

    5 回复  |  直到 12 年前
        1
  •  23
  •   Douglas    15 年前

    有一个 contains 方法,因此您应该能够:

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

    警告:这可能不会达到你(或我)的预期,请参阅下面汤姆的评论。

        2
  •  14
  •   Trenton    10 年前

    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
  •  10
  •   duffymo    15 年前

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

        4
  •  10
  •   andr Gal Mathys    13 年前

    你可以考虑使用 Collection

    这个 收藏 contains(Object o) 方法,返回 true / false .

    ArrayList indexOf(Object o) ,它提供了一个索引,但该方法并不适用于所有集合实现。

    这两种方法都需要 equals() hashCode() 方法,以防使用基于哈希的 收藏 (例如。 HashSet

        5
  •  5
  •   krock    15 年前

    你可以用其中的一个 Arrays.binarySearch() 方法。请记住,数组必须首先排序。