假设我有一个 boolean 数组,我想在其中找到第一个“true”条目。 由于 Java 数组没有 indexOf 方法,我想到了这样做:
boolean[] bArr = new boolean[]{true, true, true, true, true};
int index = Arrays.asList(bArr).indexOf(true);
现在为什么这会导致索引为 -1(即“未找到真正的”)。
最佳答案
因为 Arrays.asList(bArr)
正在创建 List<boolean[]>
不是List<Boolean>
. Arrays.asList
不装箱您的 boolean[]
数组到 Boolean[]
数组(注意区别)。
因此您只有一个在索引 0 处具有单个 boolean 数组的列表。
如果您使用了 Boolean[] bArr = new Boolean[]{true, true, true, true, true};
, index
将具有值 0。
那么克服这个问题的方法是:
- 创建一个空列表,遍历数组并将每个项目添加到列表中(每个 boolean 值都将装箱为 boolean 值)
- 编写一个简单的实用方法,它接受
boolean[]
数组作为参数和要查找的值
关于java - 为什么 indexof 对于在 java 中转换为列表的数组会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27424100/