strem list转map
时间: 2023-10-21 19:29:12 浏览: 123
将List转为Map的方法有多种。其中一种方法是使用stream流的Collectors.toMap()方法。例如,可以通过对象的某个属性作为键,另外一个属性作为值,将List中的元素转为Map的键值对。代码示例如下:
Map<Integer, String> map = list.stream()
.collect(Collectors.toMap(Student::getAge, Student::getName));
这段代码将List中的元素按照学生的年龄作为键,学生的姓名作为值,转换为一个Map对象。
还有其他几种方法可以实现List转Map的操作,包括处理键重复的情况、只返回对象中某个属性等。具体代码示例如下:
- 第一种方法(可能会出现键重复异常):
Map<Long, User> map = list.stream()
.collect(Collectors.toMap(User::getId, Function.identity()));
- 第二种方法(处理键重复情况):
Map<Long, User> map = list.stream()
.collect(Collectors.toMap(User::getId, Function.identity(), (key1, key2) -> key2));
- 第三种方法(只返回对象中某个属性):
Map<Long, String> map = list.stream()
.collect(Collectors.toMap(User::getId, User::getAge, (key1, key2) -> key2));
- 第四种方法(按某个属性分组):
Map<Integer, List<User>> map = list.stream()
.collect(Collectors.groupingBy(User::getId));
每种方法都有不同的用途和适用场景,可以根据具体需求选择合适的方法来实现List转Map的操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [使用stream将list转成map](https://blog.csdn.net/Icannotdebug/article/details/78621705)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [(stream流)List转Map](https://blog.csdn.net/lizaiismy/article/details/121352640)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文