Java8中List轉(zhuǎn)Map的多種方式代碼
首先創(chuàng)建兩個實(shí)體類
@Data
public class Student {
//學(xué)號
private String no;
//姓名
private String name;
}
@Data
public class Teacher{
//教師號
private String no;
//姓名
private String name;
}一、List<Object> 轉(zhuǎn) Map<String, String>
//聲明一個List集合
List<Student> list = new ArrayList();
list.add(new Student("1001", "小A"));
list.add(new Student("1001", "小B"));//學(xué)號重復(fù)(下面特殊處理)
list.add(new Student("1002", "小C"));
list.add(new Student("1003", "小D"));
//將list轉(zhuǎn)map 【key為1個屬性,value為1個屬性】
Map<String, String> map =
list.stream().collect(Collectors.toMap(
Student::getNo,
Student::getName,
(key1 , key2) -> key1 //(map的鍵重復(fù)不會報(bào)錯,下面已經(jīng)處理)
));
//將list轉(zhuǎn)map 【key為多個屬性,value為1個屬性】
Map<String, String> map =
list.stream().collect(Collectors.toMap(
obj -> obj.getNo() + "_" + obj.getName(),
Student::getName,
(key1 , key2) -> key1 //(map的鍵重復(fù)不會報(bào)錯,下面已經(jīng)處理)
));二、List<Object> 轉(zhuǎn) Map<String, Object> (返回對象本身)
//聲明一個List集合
List<Student> list = new ArrayList();
list.add(new Student("1001", "小A"));
list.add(new Student("1001", "小B"));
list.add(new Student("1002", "小C"));
list.add(new Student("1003", "小D"));
//將list轉(zhuǎn)map 【key為1個屬性,value為對象本身】 (map的鍵去重)
Map<String, Student> map =
list.stream().collect(Collectors.toMap(
Student::getNo,
obj -> obj,
(key1 , key2) -> key1
));
或者
//將list轉(zhuǎn)map 【key為1個屬性,value為對象本身】 (map的鍵去重)
Map<String, Student> map =
list.stream().collect(Collectors.toMap(
Student::getNo,
Function.identity(),
(key1 , key2) -> key1
));
或者
//將list轉(zhuǎn)map 【key為多個屬性,value為對象本身】 (map的鍵去重)
Map<String, Student> map =
list.stream().collect(Collectors.toMap(
obj -> obj.getNo() + "_" + obj.getName(),
obj -> obj,
(key1 , key2) -> key1
));
三、List<Object1> 轉(zhuǎn) Map<String, Object2> (返回另一個對象)
//聲明一個List集合
List<Student> list = new ArrayList();
list.add(new Student("1001", "小A"));
list.add(new Student("1001", "小B"));
list.add(new Student("1002", "小C"));
list.add(new Student("1003", "小D"));
//將list轉(zhuǎn)map 【key為1個屬性,value為另一個對象】 (map的鍵去重)
Map<String, Teacher> map =
list.stream().collect(Collectors.toMap(
Student::getNo,
stu -> {
Teacher teacher = new Teacher();
teacher.setNo(stu.getNo());
teacher.setName(stu.getName());
return teacher;
},
(key1 , key2) -> key1
));四、List<Object> 轉(zhuǎn) Map<String, List<Object>> (分組)【以1個字段分/以多個字段分】
//聲明一個List集合
List<Student> list = new ArrayList();
list.add(new Student("1001", "小A"));
list.add(new Student("1001", "小B"));
list.add(new Student("1002", "小C"));
list.add(new Student("1003", "小D"));
//將list轉(zhuǎn)map 【key為1個屬性,value為相同key的集合】 (以某1個屬性來分組,將分組后相同的對象放在一起)
Map<String, List<Student>> map =
list.stream().collect( Collectors.groupingBy(Student::getNo) );
//將list轉(zhuǎn)map 【key為多個屬性,value為相同key的集合】 (以多個屬性來分組,將分組后相同的對象放在一起)
Map<String, List<Student>> map =
list.stream().collect( Collectors.groupingBy(obj -> obj.getNo + "_" + obj.getName) );
總結(jié)
到此這篇關(guān)于Java8中List轉(zhuǎn)Map的多種方式的文章就介紹到這了,更多相關(guān)Java8 List轉(zhuǎn)Map內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Java設(shè)計(jì)一個高并發(fā)的秒殺系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了如何基于Java設(shè)計(jì)一個高并發(fā)的秒殺系統(tǒng),文中的示例代碼講解詳細(xì),具有一定的借鑒價值,有需要的小伙伴可以參考下2023-10-10
java如何從地址串中解析提取省市區(qū)(完美匹配中國所有地址)
這篇文章主要給大家介紹了關(guān)于java如何從地址串中解析提取省市區(qū)的相關(guān)資料,通過這個方法可以完美匹配中國所有地址,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
Java實(shí)現(xiàn)飛機(jī)航班管理系統(tǒng)的思路詳解
這篇文章主要介紹了Java實(shí)現(xiàn)飛機(jī)航班管理系統(tǒng)的思路詳解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07
Java POI讀取excel中數(shù)值精度損失問題解決
這篇文章主要介紹了Java POI讀取excel中數(shù)值精度損失問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-04-04
Java反射之Call stack introspection詳解
這篇文章主要介紹了Java反射之Call stack introspection詳解,具有一定參考價值,需要的朋友可以了解下。2017-11-11
SpringBoot集成P6Spy實(shí)現(xiàn)SQL日志的記錄詳解
P6Spy是一個框架,它可以無縫地?cái)r截和記錄數(shù)據(jù)庫活動,而無需更改現(xiàn)有應(yīng)用程序的代碼。一般我們使用的比較多的是使用p6spy打印我們最后執(zhí)行的sql語句2022-11-11
java遍歷http請求request的所有參數(shù)實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄猨ava遍歷http請求request的所有參數(shù)實(shí)現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09
Spring高級注解@PropertySource詳細(xì)解讀
這篇文章主要介紹了Spring高級注解@PropertySource詳細(xì)解讀,@PropertySource注解用于指定資源文件讀取的位置,它不僅能讀取properties文件,也能讀取xml文件,并且通過YAML解析器,配合自定義PropertySourceFactory實(shí)現(xiàn)解析yaml文件,需要的朋友可以參考下2023-11-11

