java通过stream().map进行对象收集时记录改数据的下标
时间: 2024-05-05 16:18:13 浏览: 43
可以使用IntStream.range()方法生成一个范围为0到原始对象列表大小的整数流,然后使用mapToObj()方法映射每个下标到包含原始对象和下标的新对象,最后收集该流中的对象集合即可。
示例代码如下:
```
List<MyObject> list = ...;
List<MyObjectWithIndex> listWithIndex = IntStream.range(0, list.size())
.mapToObj(i -> new MyObjectWithIndex(list.get(i), i))
.collect(Collectors.toList());
```
相关问题
java通过stream()流的map进行对象收集时记录改数据的下标
可以使用IntStream.range()方法来生成下标,然后在map()方法中使用该下标记录数据,例如:
```
List<MyObject> list = new ArrayList<>();
Map<Integer, MyObject> map = IntStream.range(0, list.size())
.boxed()
.collect(Collectors.toMap(Function.identity(), i -> list.get(i)));
```
.stream().map获取下标
如果你想在 Java 中使用 `.stream().map()` 获取每个元素的下标,可以使用 `IntStream.range()` 方法来生成一个整数流,并将其作为下标与元素一起传递给 `.map()` 方法。示例如下:
```
List<String> list = Arrays.asList("apple", "banana", "orange");
IntStream.range(0, list.size())
.mapToObj(i -> i + ":" + list.get(i))
.forEach(System.out::println);
```
输出:
```
0:apple
1:banana
2:orange
```
在这个示例中,我们使用 `IntStream.range()` 方法从 0 到列表的大小生成一个整数流。然后,使用 `.mapToObj()` 方法将每个整数与列表中相应的元素一起转换为一个字符串。最后,我们使用 `.forEach()` 方法遍历字符串流并将其打印到控制台上。
阅读全文