为了账号安全,请及时绑定邮箱和手机立即绑定

java - 如何在ArrayList java中查找所有带有字符串索引的事件

java - 如何在ArrayList java中查找所有带有字符串索引的事件

慕慕森 2021-06-29 15:31:44
有一个包含如下数据的 ArrayList。我的要求是找到数据长度为 4 的所有索引。values.add("1000");values.add("10001111");values.add("45678901");values.add("1111");values.add("22222222");values.add("2222");values.add("33333333");
查看完整描述

3 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

你需要 :

  • 迭代值

  • 检查长度

  • 如果条件通过,则保留索引


  1. 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);

    }

}


查看完整回答
反对 回复 2021-07-07
?
catspeake

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();


查看完整回答
反对 回复 2021-07-07
  • 3 回答
  • 0 关注
  • 226 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信