3 回答
TA贡献1848条经验 获得超2个赞
你需要 :
迭代值
检查长度
如果条件通过,则保留索引
Workable demo
:使用Streams
您可以内联解决方案以获得一个List
或一个int[]
List<Integer> indexes = values.stream().filter(s -> s.length() == 4)
.map(values::indexOf)
.collect(Collectors.toList());
int[] indexesArray = values.stream().filter(s -> s.length() == 4)
.mapToInt(values::indexOf)
.toArray();
Workable demo
:使用经典for loop
List<Integer> indexes = new ArrayList<>();
for(int i=0; i<values.size(); i++){
if(values.get(i).length() == 4){
indexes.add(i);
}
}
TA贡献1111条经验 获得超0个赞
您可以创建一个IntStream
索引:
IntStream allIndices = IntStream.range(0, values.size());
然后您可以根据您提供的条件进行过滤:
IntStream filteredIndices = allIndices.filter(i -> values.get(i).length() == 4);
最后,您可以将这些索引转换为您喜欢的任何数据结构。
数组:
int[] indices = filteredIndices.toArray();
或者一个列表
List<Integer> indices = filteredIndices.boxed().collect(Collectors.toList());
作为一个声明:
int[] indices = IntStream.range(0, values.size()) .filter(i -> values.get(i).length() == 4) .toArray();
添加回答
举报