假设我有一个布尔数组,我想找到第一个“true”条目。
由于Java数组没有indexOf方法,所以我考虑这样做:
boolean[] bArr = new boolean[]{true, true, true, true, true};
int index = Arrays.asList(bArr).indexOf(true);
现在为什么会导致索引是-1(即“未找到正确结果”)呢?与编译相关:http://ideone.com/DdNoVw。
假设我有一个布尔数组,我想找到第一个“true”条目。
由于Java数组没有indexOf方法,所以我考虑这样做:
boolean[] bArr = new boolean[]{true, true, true, true, true};
int index = Arrays.asList(bArr).indexOf(true);
因为Arrays.asList(bArr)
创建了一个List<boolean[]>
而不是一个List<Boolean>
。 Arrays.asList
没有将您的boolean[]
数组装箱为Boolean[]
数组(请注意区别)。
因此,您只有一个List,它在索引0处具有单个布尔数组。
如果您使用了Boolean[] bArr = new Boolean[] {true, true, true, true, true};
,则index
将具有值0。
因此,解决此问题的方法是:
boolean[]
数组作为参数和要查找的值