java - 为什么 indexof 对于在 java 中转换为列表的数组会失败?

标签 java arrays casting boolean indexof

假设我有一个 boolean 数组,我想在其中找到第一个“true”条目。 由于 Java 数组没有 indexOf 方法,我想到了这样做:

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

现在为什么这会导致索引为 -1(即“未找到真正的”)。

可编译:http://ideone.com/DdNoVw

最佳答案

因为 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/

相关文章:

c - int (*ar) [] 声明在 C 中是什么意思?

ios - 相同顺序索引 Swift 1.2 中的字典值和键

java - 如何动态设置 String.format 中的移位?

Java String 和 String[] 之间不匹配

java - 将字符串数组添加到日历数组中

使用反射在运行时进行 C# 类型转换

c - 如何在 C/C++ 中使用 pthread 而不仅仅是带有 void 参数的 void 函数?

C# LINQ 筛选 IEnumerable<IX> 并表示为 IEnumerable<X :IX>

java - OpenNLP 创建注释器

java - java中仅从url获取编码的html内容