为什么在Java中将数组转换为列表后,使用indexOf方法失败?

3

假设我有一个布尔数组,我想找到第一个“true”条目。

由于Java数组没有indexOf方法,所以我考虑这样做:

boolean[] bArr = new boolean[]{true, true, true, true, true};
int index = Arrays.asList(bArr).indexOf(true);

现在为什么会导致索引是-1(即“未找到正确结果”)呢?与编译相关:http://ideone.com/DdNoVw
1个回答

10

因为Arrays.asList(bArr)创建了一个List<boolean[]>而不是一个List<Boolean>Arrays.asList没有将您的boolean[]数组装箱为Boolean[]数组(请注意区别)。

因此,您只有一个List,它在索引0处具有单个布尔数组。

如果您使用了Boolean[] bArr = new Boolean[] {true, true, true, true, true};,则index将具有值0。

因此,解决此问题的方法是:

  • 创建一个空的List,循环遍历您的数组并将每个项添加到列表中(每个布尔值都会被装箱为Boolean)
  • 编写一个简单的实用程序方法,该方法将以boolean[]数组作为参数和要查找的值

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接