Java中List使用stream流转成map的几种方式

本文介绍了如何在Java中将List转换为Map、Map、Map>以及Map>的不同实例,包括使用流API和合并策略的示例。
摘要由CSDN通过智能技术生成

实体例子

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

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 转成Map<String,Object>

1

2

3

4

5

6

7

8

9

10

11

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 转成Map<String,String>

1

2

3

4

5

6

7

8

9

10

11

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 转成Map<String,List>

方法一:

1

2

3

4

5

6

7

8

9

10

11

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”:“熊二”}]}

方法二:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

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 转成Map<String,List>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

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>> 转成Map<String,Map<String,Object>>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

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>> 转成Map<String,Object>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

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>> 转成Map<String,Map<String,String>>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

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>> 转成Map<String,String>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

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”:“光头强”}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下代码将map集合的数据用stream流转list集合: List<Object> list = map.entrySet().stream() .map(Map.Entry::getValue) .collect(Collectors.toList()); ### 回答2: stream流是Java 8引入的一个新特性,它可以方便地对集合进行遍历、过滤、映射、排序等操作。要将map集合的数据list集合,可以通过以下步骤实现: 1. 首先,我们需要一个map集合来进行操作。假设我们有一个名为map的HashMap对象。 2. 创建一个stream流,使用map的entrySet()方法将map集合换为一个包含所有键值对的Set集合,然后调用stream()方法将Set集合为一个stream流。 3. 调用stream流的map()方法,传入一个Lambda表达式,用于将每个键值对换为所需的对象类型。在Lambda表达式,可以通过getKey()和getValue()方法来获取键和值。 4. 调用stream流的collect()方法,传入Collectors.toList()方法,将stream的元素收集到一个新的List集合。 5. 最后,将换后的List集合赋值给一个新的List变量,以便后续的使用。 代码示例如下: ``` import java.util.*; public class MapStreamToList { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("A", 1); map.put("B", 2); map.put("C", 3); List<Map.Entry<String, Integer>> list = map.entrySet().stream() .map(entry -> new AbstractMap.SimpleEntry<>(entry.getKey(), entry.getValue())) .collect(Collectors.toList()); System.out.println(list); } } ``` 以上代码将会把map集合的键值对换为一个包含SimpleEntry对象的List集合并打印出来。你也可以根据需要修改Lambda表达式换操作来适应不同的需求。 ### 回答3: 将map集合的数据用stream流转list集合可以通过以下步骤实现: 首先,我们需要先创建一个map集合,并向其添加一些数据。例如,假设我们有一个map集合叫做map,其存储的是学生的姓名和年龄信息: Map<String, Integer> map = new HashMap<>(); map.put("张三", 20); map.put("李四", 22); map.put("王五", 19); map.put("赵六", 21); 接下来,我们使用stream流来对map集合的数据进行处理,通过map的entrySet()方法获取到map集合的所有键值对。然后,通过streammap()方法将每个键值对化为一个新的对象,这里我们只需要获取每个键值对的值,可以使用entry.getValue()方法来获取。最后,通过stream的collect()方法将stream流转换为一个list集合: List<Integer> list = map.entrySet().stream() .map(entry -> entry.getValue()) .collect(Collectors.toList()); 这样,我们就功将map集合的数据使用stream流转为了一个list集合。最终,list集合存储的是map集合所有键值对的值。在这个例子list集合的数据为[20, 22, 19, 21],对应于map集合的年龄信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值