【问题标题】:Arrays.asList works [duplicate]Arrays.asList 工作 [重复]
【发布时间】:2015-06-09 04:01:19
【问题描述】:

我在下面的代码 sn-p 中取了两个数组,

String[] things = {"a", "b", "c", "d", "e", "f"};
int[] a1 ={1,2,3,4,5};
System.out.println(Arrays.asList(things).contains("c"));
System.out.println(Arrays.asList(a1).contains(3));

我的输出是

真 假的

我知道当我们使用 Arrays.asList 时,我们会得到一个包装器对象,该对象指向现有数组以进行随机访问,但实际上并没有创建列表接口的对象。

我的问题是当 contains 方法适用于字符串时,为什么它不适用于 int。

【问题讨论】:

    标签: java arrays


    【解决方案1】:

    Arrays.asList 对于 int 数组(或类似地对于任何原始数组)会生成一个 List<int[]>,其单个元素是该 int 数组。这就是contains(3) 返回 false 的原因(System.out.println(Arrays.asList(a1).contains(a1)); 将返回 true)。

    如果您为 Integer 数组调用 Arrays.asList,您将获得 List<Integer>contains 将按预期工作。

    【讨论】:

      【解决方案2】:

      代替

      int[] a1 ={1,2,3,4,5};
      System.out.println(Arrays.asList(a1).contains(3));
      

      你可以使用:

      System.out.println(Arrays.asList(1, 2, 3, 4, 5).contains(3));
      

      asList() 的签名是asList(T... a) ㄧ 即它需要一个可变参数,因此不需要显式创建数组。构造函数将负责自动装箱。

      【讨论】:

        猜你喜欢
        • 2015-10-03
        • 2023-03-17
        • 2012-06-14
        • 1970-01-01
        • 2015-07-22
        • 2014-10-24
        • 1970-01-01
        • 2010-11-30
        相关资源
        最近更新 更多