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)文章
聊聊@Autowired注解注入,寫接口名字還是實現(xiàn)類的名字
這篇文章主要介紹了聊聊@Autowired注解注入,寫接口名字還是實現(xiàn)類的名字,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11Java 高并發(fā)十: JDK8對并發(fā)的新支持詳解
本文主要介紹Java 高并發(fā)JDK8的支持,這里整理了詳細的資料及1. LongAdder 2. CompletableFuture 3. StampedLock的介紹,有興趣的小伙伴可以參考下2016-09-09Springboot+MybatisPlus+Oracle實現(xiàn)主鍵自增的示例代碼
這篇文章主要介紹了Springboot+MybatisPlus+Oracle實現(xiàn)主鍵自增的示例代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11解決mybatis-plus使用jdk8的LocalDateTime 查詢時報錯的方法
這篇文章主要介紹了解決mybatis-plus使用jdk8的LocalDateTime 查詢時報錯的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-08-08SSH框架網(wǎng)上商城項目第28戰(zhàn)之使用Ajax技術(shù)局部更新商品數(shù)量和總價
這篇文章主要為大家詳細介紹了SSH框架網(wǎng)上商城項目第28戰(zhàn)之使用Ajax技術(shù)局部更新商品數(shù)量和總價,感興趣的小伙伴們可以參考一下2016-06-06SpringBoot+MyBatis-Plus實現(xiàn)分頁功能
在SpringBoot項目中,結(jié)合MyBatis-Plus(簡稱MP)可以非常方便地實現(xiàn)分頁功能,MP為開發(fā)者提供了分頁插件PaginationInterceptor,只需簡單配置即可使用,本文給大家介紹了SpringBoot+MyBatis-Plus實現(xiàn)分頁功能,文中通過代碼示例給大家介紹的非常詳細,需要的朋友可以參考下2024-01-01使用Java代碼獲取服務(wù)器性能信息及局域網(wǎng)內(nèi)主機名
這篇文章主要介紹了使用Java代碼獲取服務(wù)器性能信息及局域網(wǎng)內(nèi)主機名的方法,方便對服務(wù)器的遠程管理和團隊協(xié)作時用到,而且文中的方法無需調(diào)用jni,需要的朋友可以參考下2015-11-11