JAVA8-Lambda-List转Map

List转Map需要注意点是在收集map时Collectors.toMap()建议选三个入参的方法。

JAVA8-Lambda-List转Map

示例如下:(注意list中的”张三”有两个我们将其作为Map的key)

java<strong><em>*</em></strong>*</p> <h4>无第三个参数示例</h4> <pre><code>public static void main(String[] args) { ArrayList list = new ArrayList(); list.add(new Student("张三", 19, "杭州")); list.add(new Student("李四", 18, "北京")); list.add(new Student("张三", 17, "西安")); list.add(new Student("赵六", 16, "兰州")); Map map = list.stream() .collect(Collectors.toMap(Student::getName, student -> student)); System.out.println(map.toString()); } </code></pre> <pre><code> #### 执行结果:(Duplicate key 提示key重复,收集map时不知道保留哪个key) ![JAVA8-Lambda-List转Map](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230619/2295904-20221105111541114-1902671165.png) #### 有第三个参数示例: 第三个参数是指明当key重复时,我需要用哪一个
// (k1, k2) -> k2) 当key重复时要将后面出现的作为我的收集对象,抛弃前面已收集的。
// (k1, k2) -> k1) 当key重复时保留已收集的,抛弃新出现的。
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(new Student("张三", 19, "杭州"));
list.add(new Student("李四", 18, "北京"));
list.add(new Student("张三", 17, "西安"));
list.add(new Student("赵六", 16, "兰州"));

Map map = list.stream()
.collect(Collectors.toMap(Student::getName, student -> student, (k1, k2) -> k1));

System.out.println(map.toString());
}

(k1, k2) -> k2)的结果:(张三的结果是list中最后一次出现的(索引最大的))

{&#x674E;&#x56DB;=Student{name='&#x674E;&#x56DB;', age=18, addr='&#x5317;&#x4EAC;'}, &#x5F20;&#x4E09;=Student{name='&#x5F20;&#x4E09;', age=17, addr='&#x897F;&#x5B89;'}, &#x8D75;&#x516D;=Student{name='&#x8D75;&#x516D;', age=16, addr='&#x5170;&#x5DDE;'}}

(k1, k2) -> k1)的结果:(张三的结果是list中第一次出现的(索引最小的))

{&#x674E;&#x56DB;=Student{name='&#x674E;&#x56DB;', age=18, addr='&#x5317;&#x4EAC;'}, &#x5F20;&#x4E09;=Student{name='&#x5F20;&#x4E09;', age=19, addr='&#x676D;&#x5DDE;'}, &#x8D75;&#x516D;=Student{name='&#x8D75;&#x516D;', age=16, addr='&#x5170;&#x5DDE;'}}

Original: https://www.cnblogs.com/CodeLuckly/p/16859874.html
Author: CodeLuckly
Title: JAVA8-Lambda-List转Map

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/713681/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球