Java中List使用stream流轉(zhuǎn)成map的幾種方式詳解
實體例子
public class Person {
private String name;
private String address;
public Person(String name, String address) {
this.name = name;
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}List 轉(zhuǎn)成Map<String,Object>
List<Person> list = new ArrayList<>();
Person person1 = new Person("熊大","森林第一個小屋");
Person person2 = new Person("熊二","森林第二個小屋");
Person person3 = new Person("光頭強","森林第三個小屋");
Person person4 = new Person("熊大","森林第四個小屋");
list.add(person1);
list.add(person2);
list.add(person3);
list.add(person4);
Map<String,Person> map = list.stream().collect(Collectors.toMap(Person::getName,each->each,(value1, value2) -> value1));
System.out.println(JSON.toJSONString(map));
控制臺打印日志:
{“光頭強”:{“address”:“森林第三個小屋”,“name”:“光頭強”},“熊大”:{“address”:“森林第一個小屋”,“name”:“熊大”},“熊二”:{“address”:“森林第二個小屋”,“name”:“熊二”}}
List 轉(zhuǎn)成Map<String,String>
List<Person> list = new ArrayList<>();
Person person1 = new Person("熊大","森林第一個小屋");
Person person2 = new Person("熊二","森林第二個小屋");
Person person3 = new Person("光頭強","森林第三個小屋");
Person person4 = new Person("熊大","森林第四個小屋");
list.add(person1);
list.add(person2);
list.add(person3);
list.add(person4);
Map<String,String> map = list.stream().collect(Collectors.toMap(Person::getName,Person::getAddress,(value1, value2) -> value1));
System.out.println(JSON.toJSONString(map));
控制臺打印日志:
{“光頭強”:“森林第三個小屋”,“熊大”:“森林第一個小屋”,“熊二”:“森林第二個小屋”}
List 轉(zhuǎn)成Map<String,List>
方法一:
List<Person> list = new ArrayList<>();
Person person1 = new Person("熊大","森林第一個小屋");
Person person2 = new Person("熊二","森林第二個小屋");
Person person3 = new Person("光頭強","森林第三個小屋");
Person person4 = new Person("熊大","森林第四個小屋");
list.add(person1);
list.add(person2);
list.add(person3);
list.add(person4);
Map<String, List<Person>> map = list.stream().collect(Collectors.groupingBy(Person::getName));
System.out.println(JSON.toJSONString(map));
控制臺打印日志:
{“光頭強”:[{“address”:“森林第三個小屋”,“name”:“光頭強”}],“熊大”:[{“address”:“森林第一個小屋”,“name”:“熊大”},{“address”:“森林第四個小屋”,“name”:“熊大”}],“熊二”:[{“address”:“森林第二個小屋”,“name”:“熊二”}]}
方法二:
List<Person> list = new ArrayList<>();
Person person1 = new Person("熊大","森林第一個小屋");
Person person2 = new Person("熊二","森林第二個小屋");
Person person3 = new Person("光頭強","森林第三個小屋");
Person person4 = new Person("熊大","森林第四個小屋");
list.add(person1);
list.add(person2);
list.add(person3);
list.add(person4);
Map<String,List<Person>> map = list.stream().collect(Collectors.toMap(Person::getName,each->Collections.singletonList(each),(value1, value2) -> {
List<Person> union = new ArrayList<>(value1);
union.addAll(value2);
return union;
}));
System.out.println(JSON.toJSONString(map));
控制臺打印日志:
{“光頭強”:[{“address”:“森林第三個小屋”,“name”:“光頭強”}],“熊大”:[{“address”:“森林第一個小屋”,“name”:“熊大”},{“address”:“森林第四個小屋”,“name”:“熊大”}],“熊二”:[{“address”:“森林第二個小屋”,“name”:“熊二”}]}
List 轉(zhuǎn)成Map<String,List>
List<Person> list = new ArrayList<>();
Person person1 = new Person("熊大","森林第一個小屋");
Person person2 = new Person("熊二","森林第二個小屋");
Person person3 = new Person("光頭強","森林第三個小屋");
Person person4 = new Person("熊大","森林第四個小屋");
list.add(person1);
list.add(person2);
list.add(person3);
list.add(person4);
Map<String,List<String>> map = list.stream().collect(Collectors.toMap(Person::getName,each->Collections.singletonList(each.getAddress()),(value1, value2) -> {
List<String> union = new ArrayList<>(value1);
union.addAll(value2);
return union;
}));
System.out.println(JSON.toJSONString(map));
控制臺打印日志:
{“光頭強”:[“森林第三個小屋”],“熊大”:[“森林第一個小屋”,“森林第四個小屋”],“熊二”:[“森林第二個小屋”]}
List<Map<String,Object>> 轉(zhuǎn)成Map<String,Map<String,Object>>
List<Map<String,Object>> list = new ArrayList<>();
Person person1 = new Person("熊大","森林第一個小屋");
Person person2 = new Person("熊二","森林第二個小屋");
Person person3 = new Person("光頭強","森林第三個小屋");
Map<String,Object> map1 = new HashMap<>();
map1.put("id","1");
map1.put("person",person1);
Map<String,Object> map2 = new HashMap<>();
map2.put("id","2");
map2.put("person",person2);
Map<String,Object> map3 = new HashMap<>();
map3.put("id","3");
map3.put("person",person3);
list.add(map1);
list.add(map2);
list.add(map3);
Map<String,Map<String,Object>> map = list.stream().collect(Collectors.toMap(each->Objects.toString(each.get("id"),""),each->each,(key1,key2)->key1));
System.out.println(JSON.toJSONString(map));
控制臺打印日志:
{“1”:{“person”:{“address”:“森林第一個小屋”,“name”:“熊大”},“id”:“1”},“2”:{“person”:{“address”:“森林第二個小屋”,“name”:“熊二”},“id”:“2”},“3”:{“person”:{“address”:“森林第三個小屋”,“name”:“光頭強”},“id”:“3”}}
List<Map<String,Object>> 轉(zhuǎn)成Map<String,Object>
List<Map<String,Object>> list = new ArrayList<>();
Person person1 = new Person("熊大","森林第一個小屋");
Person person2 = new Person("熊二","森林第二個小屋");
Person person3 = new Person("光頭強","森林第三個小屋");
Map<String,Object> map1 = new HashMap<>();
map1.put("id","1");
map1.put("person",person1);
Map<String,Object> map2 = new HashMap<>();
map2.put("id","2");
map2.put("person",person2);
Map<String,Object> map3 = new HashMap<>();
map3.put("id","3");
map3.put("person",person3);
list.add(map1);
list.add(map2);
list.add(map3);
Map<String,Object> map = list.stream().collect(Collectors.toMap(each->Objects.toString(each.get("id"),""),each->each.get("person"),(key1,key2)->key1));
System.out.println(JSON.toJSONString(map));
控制臺打印日志:
{“1”:{“address”:“森林第一個小屋”,“name”:“熊大”},“2”:{“address”:“森林第二個小屋”,“name”:“熊二”},“3”:{“address”:“森林第三個小屋”,“name”:“光頭強”}}
List<Map<String,String>> 轉(zhuǎn)成Map<String,Map<String,String>>
List<Map<String,String>> list = new ArrayList<>();
Map<String,String> map1 = new HashMap<>();
map1.put("id","1");
map1.put("name","熊大");
map1.put("address","森林第一個小屋");
Map<String,String> map2 = new HashMap<>();
map2.put("id","2");
map2.put("name","熊二");
map2.put("address","森林第二個小屋");
Map<String,String> map3 = new HashMap<>();
map3.put("id","3");
map3.put("name","光頭強");
map3.put("address","森林第三個小屋");
list.add(map1);
list.add(map2);
list.add(map3);
Map<String,Map<String,String>> map = list.stream().collect(Collectors.toMap(each->each.get("id"),each->each,(key1,key2)->key1));
System.out.println(JSON.toJSONString(map));
控制臺打印日志:
{“1”:{“address”:“森林第一個小屋”,“name”:“熊大”,“id”:“1”},“2”:{“address”:“森林第二個小屋”,“name”:“熊二”,“id”:“2”},“3”:{“address”:“森林第三個小屋”,“name”:“光頭強”,“id”:“3”}}
List<Map<String,String>> 轉(zhuǎn)成Map<String,String>
List<Map<String,String>> list = new ArrayList<>();
Map<String,String> map1 = new HashMap<>();
map1.put("id","1");
map1.put("name","熊大");
map1.put("address","森林第一個小屋");
Map<String,String> map2 = new HashMap<>();
map2.put("id","2");
map2.put("name","熊二");
map2.put("address","森林第二個小屋");
Map<String,String> map3 = new HashMap<>();
map3.put("id","3");
map3.put("name","光頭強");
map3.put("address","森林第三個小屋");
list.add(map1);
list.add(map2);
list.add(map3);
Map<String,String> map = list.stream().collect(Collectors.toMap(each->each.get("id"),each->each.get("name"),(key1,key2)->key1));
System.out.println(JSON.toJSONString(map));
控制臺打印日志:
{“1”:“熊大”,“2”:“熊二”,“3”:“光頭強”}
總結(jié)
到此這篇關(guān)于Java中List使用stream流轉(zhuǎn)成map的幾種方式的文章就介紹到這了,更多相關(guān)Java List用stream流轉(zhuǎn)map內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring MVC-@RequestMapping注解詳解
@RequestMapping注解的作用,就是將請求和處理請求的控制器方法關(guān)聯(lián)起來,建立映射關(guān)系。這篇文章主要給大家介紹了關(guān)于SpringMVC中@RequestMapping注解用法,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04
java11新特性之集合轉(zhuǎn)換為數(shù)組的方法
Java11引入了一種將帶有泛型的集合轉(zhuǎn)換為帶有泛型的數(shù)組的簡單方法,本文通過實例代碼介紹java11新特性之集合轉(zhuǎn)換為數(shù)組的操作方法,感興趣的朋友跟隨小編一起看看吧2024-06-06
Java lambda list轉(zhuǎn)換map時,把多個參數(shù)拼接作為key操作
這篇文章主要介紹了Java lambda list轉(zhuǎn)換map時,把多個參數(shù)拼接作為key操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08
Springboot+WebSocket+Netty實現(xiàn)在線聊天/群聊系統(tǒng)
這篇文章主要實現(xiàn)在好友添加、建群、聊天對話、群聊功能,使用Java作為后端語言進(jìn)行支持,界面友好,開發(fā)簡單,文章中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下2023-08-08
springboot多環(huán)境配置方案(不用5分鐘)
這篇文章主要介紹了springboot多環(huán)境配置方案(不用5分鐘),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01

