boolean[] test1 = new boolean[]{false, true, false};
boolean hasTrue = Arrays.asList(test1).contains(true);
为什么这样的写法在Java中得到的是 false 呢?
那我如何判断 test1 数组中包含 true 呢。。。
boolean[] test1 = new boolean[]{false, true, false};
boolean hasTrue = Arrays.asList(test1).contains(true);
为什么这样的写法在Java中得到的是 false 呢?
那我如何判断 test1 数组中包含 true 呢。。。
@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.
这个语言上的设计真的容易引起问题啊!
8 回答6.4k 阅读
3 回答2.3k 阅读✓ 已解决
2 回答3.3k 阅读
2 回答3.9k 阅读
3 回答1.7k 阅读✓ 已解决
1 回答2k 阅读✓ 已解决
1 回答2.9k 阅读
test1
是一个数组对象,Arrays.asList(test1)
其实就是将这个数组对象作为一个元素放到了列表中。你要想使用
Arrays.asList
需要数组是非基本数据类型才行。Arrays.asList(new Boolean[]{false, true, false})
基本数据类型的话,直接遍历数组吧。