stream流将list转map 把list下标作为key
时间: 2023-11-03 09:01:46 浏览: 295
在使用Stream流将List转换为Map时,如果要将List的下标作为key,可以使用IntStream.range()方法来生成下标,然后再使用Collectors.toMap()方法来进行转换。下面是一个示例代码:
List<String> list = Arrays.asList("apple", "banana", "orange");
Map<Integer, String> map = IntStream.range(0, list.size())
.boxed()
.collect(Collectors.toMap(Function.identity(), list::get));
这段代码中,使用IntStream.range()方法生成了一个包含List下标的IntStream,然后使用boxed()方法将IntStream转换为Stream<Integer>,最后使用Collectors.toMap()方法将下标作为key,List中对应位置的元素作为value,来创建一个Map。
相关问题
list 转map 下标为key
,值为value 的方法实现?
这个问题可以直接回答:可以使用 Java 8 中的 stream() 方法来实现,代码如下:
List<String> list = Arrays.asList("a", "b", "c");
Map<Integer, String> map = list.stream().collect(Collectors.toMap(list::indexOf, s -> s));
System.out.println(map);
输出结果为:{0=a, 1=b, 2=c}
java List<String>转map,key为下标
可以使用Java 8中的Stream API和Collectors.toMap()方法将List<String>转换为Map<Integer, String>,其中Integer为下标,String为List中的元素。
代码示例:
```
List<String> list = Arrays.asList("a", "b", "c", "d");
Map<Integer, String> map = IntStream.range(0, list.size())
.boxed()
.collect(Collectors.toMap(Function.identity(), list::get));
```
解释一下上面的代码:
- IntStream.range(0, list.size())会生成一个从0到list.size()-1的整数流。
- .boxed()将IntStream转换为一个Stream<Integer>。
- Collectors.toMap(Function.identity(), list::get)将Stream<Integer>转换为Map<Integer, String>,其中key为元素的下标,value为List中的元素。其中Function.identity()方法返回一个恒等函数,其作用是返回输入的对象本身。
注意事项:
- 如果List中有重复的元素,则会抛出IllegalStateException异常。
- 如果想要在转换过程中处理重复的键,可以使用Collectors.toMap()方法的第三个参数来指定处理冲突的方式。
阅读全文