首先,使用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]



