gpt4 book ai didi

java - 使用流 API 查找列表中项目的所有索引

转载 作者:太空狗 更新时间:2023-10-29 22:44:34 25 4
gpt4 key购买 nike

我正在尝试使用 Java 8 流和 lambda 表达式进行顺序搜索。这是我的代码

List<Integer> list = Arrays.asList(10, 6, 16, 46, 5, 16, 7);
int search = 16;
list.stream().filter(p -> p == search).forEachOrdered(e -> System.out.println(list.indexOf(e)));
Output: 2
2

我知道 list.indexOf(e) 总是打印第一次出现的索引。如何打印所有索引?

最佳答案

首先,使用 Lambdas 并不能解决所有问题……但是,即便如此,作为 for 循环,您还是可以这样写:

List<Integer> results = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
if (search == list.get(i).intValue()) {
// found value at index i
results.add(i);
}
}

现在,这并没有什么特别的问题,但请注意,这里的关键方面是索引,而不是值。索引是“循环”的输入和输出。

作为流::

List<Integer> list = Arrays.asList(10, 6, 16, 46, 5, 16, 7);
int search = 16;
int[] indices = IntStream.range(0, list.size())
.filter(i -> list.get(i) == search)
.toArray();
System.out.printf("Found %d at indices %s%n", search, Arrays.toString(indices));

产生输出:

Found 16 at indices [2, 5]

关于java - 使用流 API 查找列表中项目的所有索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26179001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com