亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java中List使用stream流轉(zhuǎn)成map的幾種方式詳解

 更新時(shí)間:2023年04月19日 09:20:38   作者:小小小米fly  
Stream是Java8中處理集合的關(guān)鍵抽象概念,它可以指定你希望對(duì)集合進(jìn)行的操作,可以執(zhí)行非常復(fù)雜的查找、過(guò)濾和映射數(shù)據(jù)等操作,下面這篇文章主要給大家介紹了關(guān)于Java中List使用stream流轉(zhuǎn)成map的幾種方式,需要的朋友可以參考下

實(shí)體例子

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("熊大","森林第一個(gè)小屋");
	Person person2 = new Person("熊二","森林第二個(gè)小屋");
	Person person3 = new Person("光頭強(qiáng)","森林第三個(gè)小屋");
	Person person4 = new Person("熊大","森林第四個(gè)小屋");
	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));

控制臺(tái)打印日志:

{“光頭強(qiáng)”:{“address”:“森林第三個(gè)小屋”,“name”:“光頭強(qiáng)”},“熊大”:{“address”:“森林第一個(gè)小屋”,“name”:“熊大”},“熊二”:{“address”:“森林第二個(gè)小屋”,“name”:“熊二”}}

List 轉(zhuǎn)成Map<String,String>

	List<Person> list = new ArrayList<>();
	Person person1 = new Person("熊大","森林第一個(gè)小屋");
	Person person2 = new Person("熊二","森林第二個(gè)小屋");
	Person person3 = new Person("光頭強(qiáng)","森林第三個(gè)小屋");
	Person person4 = new Person("熊大","森林第四個(gè)小屋");
	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));

控制臺(tái)打印日志:

{“光頭強(qiáng)”:“森林第三個(gè)小屋”,“熊大”:“森林第一個(gè)小屋”,“熊二”:“森林第二個(gè)小屋”}

List 轉(zhuǎn)成Map<String,List>

方法一:

	List<Person> list = new ArrayList<>();
	Person person1 = new Person("熊大","森林第一個(gè)小屋");
	Person person2 = new Person("熊二","森林第二個(gè)小屋");
	Person person3 = new Person("光頭強(qiáng)","森林第三個(gè)小屋");
	Person person4 = new Person("熊大","森林第四個(gè)小屋");
	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));

控制臺(tái)打印日志:

{“光頭強(qiáng)”:[{“address”:“森林第三個(gè)小屋”,“name”:“光頭強(qiáng)”}],“熊大”:[{“address”:“森林第一個(gè)小屋”,“name”:“熊大”},{“address”:“森林第四個(gè)小屋”,“name”:“熊大”}],“熊二”:[{“address”:“森林第二個(gè)小屋”,“name”:“熊二”}]}

方法二:

	List<Person> list = new ArrayList<>();
	Person person1 = new Person("熊大","森林第一個(gè)小屋");
	Person person2 = new Person("熊二","森林第二個(gè)小屋");
	Person person3 = new Person("光頭強(qiáng)","森林第三個(gè)小屋");
	Person person4 = new Person("熊大","森林第四個(gè)小屋");
	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));

控制臺(tái)打印日志:

{“光頭強(qiáng)”:[{“address”:“森林第三個(gè)小屋”,“name”:“光頭強(qiáng)”}],“熊大”:[{“address”:“森林第一個(gè)小屋”,“name”:“熊大”},{“address”:“森林第四個(gè)小屋”,“name”:“熊大”}],“熊二”:[{“address”:“森林第二個(gè)小屋”,“name”:“熊二”}]}

List 轉(zhuǎn)成Map<String,List>

	List<Person> list = new ArrayList<>();
	Person person1 = new Person("熊大","森林第一個(gè)小屋");
	Person person2 = new Person("熊二","森林第二個(gè)小屋");
	Person person3 = new Person("光頭強(qiáng)","森林第三個(gè)小屋");
	Person person4 = new Person("熊大","森林第四個(gè)小屋");
	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));

控制臺(tái)打印日志:

{“光頭強(qiáng)”:[“森林第三個(gè)小屋”],“熊大”:[“森林第一個(gè)小屋”,“森林第四個(gè)小屋”],“熊二”:[“森林第二個(gè)小屋”]}

List<Map<String,Object>> 轉(zhuǎn)成Map<String,Map<String,Object>>

		List<Map<String,Object>> list = new ArrayList<>();
        Person person1 = new Person("熊大","森林第一個(gè)小屋");
        Person person2 = new Person("熊二","森林第二個(gè)小屋");
        Person person3 = new Person("光頭強(qiáng)","森林第三個(gè)小屋");
        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));

控制臺(tái)打印日志:

{“1”:{“person”:{“address”:“森林第一個(gè)小屋”,“name”:“熊大”},“id”:“1”},“2”:{“person”:{“address”:“森林第二個(gè)小屋”,“name”:“熊二”},“id”:“2”},“3”:{“person”:{“address”:“森林第三個(gè)小屋”,“name”:“光頭強(qiáng)”},“id”:“3”}}

List<Map<String,Object>> 轉(zhuǎn)成Map<String,Object>

		List<Map<String,Object>> list = new ArrayList<>();
        Person person1 = new Person("熊大","森林第一個(gè)小屋");
        Person person2 = new Person("熊二","森林第二個(gè)小屋");
        Person person3 = new Person("光頭強(qiáng)","森林第三個(gè)小屋");
        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));

控制臺(tái)打印日志:

{“1”:{“address”:“森林第一個(gè)小屋”,“name”:“熊大”},“2”:{“address”:“森林第二個(gè)小屋”,“name”:“熊二”},“3”:{“address”:“森林第三個(gè)小屋”,“name”:“光頭強(qiáng)”}}

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","森林第一個(gè)小屋");
        Map<String,String> map2 = new HashMap<>();
        map2.put("id","2");
        map2.put("name","熊二");
        map2.put("address","森林第二個(gè)小屋");
        Map<String,String> map3 = new HashMap<>();
        map3.put("id","3");
        map3.put("name","光頭強(qiáng)");
        map3.put("address","森林第三個(gè)小屋");
        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));

控制臺(tái)打印日志:

{“1”:{“address”:“森林第一個(gè)小屋”,“name”:“熊大”,“id”:“1”},“2”:{“address”:“森林第二個(gè)小屋”,“name”:“熊二”,“id”:“2”},“3”:{“address”:“森林第三個(gè)小屋”,“name”:“光頭強(qiáng)”,“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","森林第一個(gè)小屋");
        Map<String,String> map2 = new HashMap<>();
        map2.put("id","2");
        map2.put("name","熊二");
        map2.put("address","森林第二個(gè)小屋");
        Map<String,String> map3 = new HashMap<>();
        map3.put("id","3");
        map3.put("name","光頭強(qiáng)");
        map3.put("address","森林第三個(gè)小屋");
        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));

控制臺(tái)打印日志:

{“1”:“熊大”,“2”:“熊二”,“3”:“光頭強(qiáng)”}

總結(jié)

到此這篇關(guān)于Java中List使用stream流轉(zhuǎn)成map的幾種方式的文章就介紹到這了,更多相關(guān)Java List用stream流轉(zhuǎn)map內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 聊聊@Autowired注解注入,寫(xiě)接口名字還是實(shí)現(xiàn)類的名字

    聊聊@Autowired注解注入,寫(xiě)接口名字還是實(shí)現(xiàn)類的名字

    這篇文章主要介紹了聊聊@Autowired注解注入,寫(xiě)接口名字還是實(shí)現(xiàn)類的名字,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java中多線程同步類 CountDownLatch

    Java中多線程同步類 CountDownLatch

    本篇文章主要介紹了Java中多線程同步類 CountDownLatch的相關(guān)知識(shí),具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-05-05
  • Java 高并發(fā)十: JDK8對(duì)并發(fā)的新支持詳解

    Java 高并發(fā)十: JDK8對(duì)并發(fā)的新支持詳解

    本文主要介紹Java 高并發(fā)JDK8的支持,這里整理了詳細(xì)的資料及1. LongAdder 2. CompletableFuture 3. StampedLock的介紹,有興趣的小伙伴可以參考下
    2016-09-09
  • Java線程中的ThreadLocal詳細(xì)分析

    Java線程中的ThreadLocal詳細(xì)分析

    這篇文章主要介紹了Java線程中的ThreadLocal詳細(xì)分析,ThreadLocal?提供線程的局部變量,每個(gè)線程都可以通過(guò)?get()和?set()對(duì)局部變量進(jìn)行操作而不會(huì)對(duì)其他線程的局部變量產(chǎn)生影響,實(shí)現(xiàn)了線程之間的數(shù)據(jù)隔離,需要的朋友可以參考下
    2023-09-09
  • 為什么SpringMVC中請(qǐng)求的body不支持多次讀取

    為什么SpringMVC中請(qǐng)求的body不支持多次讀取

    這篇文章主要介紹了為什么SpringMVC中請(qǐng)求的body不支持多次讀取,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Springboot+MybatisPlus+Oracle實(shí)現(xiàn)主鍵自增的示例代碼

    Springboot+MybatisPlus+Oracle實(shí)現(xiàn)主鍵自增的示例代碼

    這篇文章主要介紹了Springboot+MybatisPlus+Oracle實(shí)現(xiàn)主鍵自增的示例代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 解決mybatis-plus使用jdk8的LocalDateTime 查詢時(shí)報(bào)錯(cuò)的方法

    解決mybatis-plus使用jdk8的LocalDateTime 查詢時(shí)報(bào)錯(cuò)的方法

    這篇文章主要介紹了解決mybatis-plus使用jdk8的LocalDateTime 查詢時(shí)報(bào)錯(cuò)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • SSH框架網(wǎng)上商城項(xiàng)目第28戰(zhàn)之使用Ajax技術(shù)局部更新商品數(shù)量和總價(jià)

    SSH框架網(wǎng)上商城項(xiàng)目第28戰(zhàn)之使用Ajax技術(shù)局部更新商品數(shù)量和總價(jià)

    這篇文章主要為大家詳細(xì)介紹了SSH框架網(wǎng)上商城項(xiàng)目第28戰(zhàn)之使用Ajax技術(shù)局部更新商品數(shù)量和總價(jià),感興趣的小伙伴們可以參考一下
    2016-06-06
  • SpringBoot+MyBatis-Plus實(shí)現(xiàn)分頁(yè)功能

    SpringBoot+MyBatis-Plus實(shí)現(xiàn)分頁(yè)功能

    在SpringBoot項(xiàng)目中,結(jié)合MyBatis-Plus(簡(jiǎn)稱MP)可以非常方便地實(shí)現(xiàn)分頁(yè)功能,MP為開(kāi)發(fā)者提供了分頁(yè)插件PaginationInterceptor,只需簡(jiǎn)單配置即可使用,本文給大家介紹了SpringBoot+MyBatis-Plus實(shí)現(xiàn)分頁(yè)功能,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • 使用Java代碼獲取服務(wù)器性能信息及局域網(wǎng)內(nèi)主機(jī)名

    使用Java代碼獲取服務(wù)器性能信息及局域網(wǎng)內(nèi)主機(jī)名

    這篇文章主要介紹了使用Java代碼獲取服務(wù)器性能信息及局域網(wǎng)內(nèi)主機(jī)名的方法,方便對(duì)服務(wù)器的遠(yuǎn)程管理和團(tuán)隊(duì)協(xié)作時(shí)用到,而且文中的方法無(wú)需調(diào)用jni,需要的朋友可以參考下
    2015-11-11

最新評(píng)論