为什么在java中,对于转换为列表的数组,indexof会失败?
假设我有一个布尔数组,我想在其中找到第一个“true”条目。 由于Java array没有indexOf方法,因此我考虑这样做:为什么在java中,对于转换为列表的数组,indexof会失败?,java,arrays,casting,boolean,indexof,Java,Arrays,Casting,Boolean,Indexof,假设我有一个布尔数组,我想在其中找到第一个“true”条目。 由于Java array没有indexOf方法,因此我考虑这样做: boolean[] bArr = new boolean[]{true, true, true, true, true}; int index = Arrays.asList(bArr).indexOf(true); 现在为什么这会导致索引“为-1”(即“未找到真值”) 可编译:因为数组。asList(bArr)正在创建列表而不是列表数组。asList不会将您的布尔
boolean[] bArr = new boolean[]{true, true, true, true, true};
int index = Arrays.asList(bArr).indexOf(true);
现在为什么这会导致索引“为-1”(即“未找到真值”)
可编译:因为
数组。asList(bArr)
正在创建列表
而不是列表
<代码>数组。asList不会将您的布尔[]
数组装箱为布尔[]
数组(注意区别)
因此,在索引0处只有一个带有单个布尔数组的列表
如果使用了Boolean[]bArr=new Boolean[]{true,true,true,true}代码>,索引
的值为0
因此,克服这一问题的方法是:
- 创建一个空列表,在数组中循环并将每个项添加到列表中(每个布尔值将被装箱为布尔值)
- 编写一个简单的实用程序方法,将
布尔[]
数组作为参数和要查找的值