Java 如何判断数组中存在某个值?

boolean[] test1 = new boolean[]{false, true, false};
boolean hasTrue = Arrays.asList(test1).contains(true);

为什么这样的写法在Java中得到的是 false 呢?
那我如何判断 test1 数组中包含 true 呢。。。

阅读 2.1k
2 个回答

test1是一个数组对象,Arrays.asList(test1) 其实就是将这个数组对象作为一个元素放到了列表中。

image.png

你要想使用Arrays.asList需要数组是非基本数据类型才行。
Arrays.asList(new Boolean[]{false, true, false})


基本数据类型的话,直接遍历数组吧。

boolean[] test1 = new boolean[]{false, true, false};
boolean isContains = false;
for (int i = 0; i < test1.length; i++) {
    if (test1[i]) {
        isContains = true;
        break;
    }
}
   @Test void testTrue(){
        {
            boolean[] test1 = new boolean[]{false, true, false};
            boolean hasTrue = Arrays.asList(test1).contains(true);
            assertFalse(hasTrue);
            System.out.println("expect 1 = "+Arrays.asList(test1).size());

        }
        {
            Boolean[] test1 = new Boolean[]{false, true, false};
            boolean hasTrue = Arrays.asList(test1).contains(true);
            assertTrue(hasTrue);
            System.out.println("expect 3 = "+Arrays.asList(test1).size());
        }
    }

Arrays.asList

    public static <T> List<T> asList(T... a) {
        return new ArrayList<>(a);
    }

这里面的一个问题是,如果是primitive 类型数组,会当成一个元素放进list.

这个语言上的设计真的容易引起问题啊!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题