java8使用stream把List转为Map,根据key提取值转List

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class Test {

    public static void main(String[] args) {

        List<Map<String, String>> list = new ArrayList<>();

        {
            Map<String, String> map = new HashMap<>();
            map.put("id", "1");
            map.put("name", "B");
            map.put("age", "C");
            list.add(map);
        }

        {
            Map<String, String> map = new HashMap<>();
            map.put("id", "1");
            map.put("name", "E");
            map.put("age", "F");
            list.add(map);
        }

        //1.返回结果{"1","B"},{"2","E"}
//        Map<String, String> a = list.stream().collect(Collectors.toMap(l -> l.get("id"), l -> l.get("name")));

        //2.两种方法返回结果{"1":{"name":"B","id":"1","age":"C"},"2":{"name":"E","id":"2","age":"F"}}
//        Map<String, Map> b = list.stream().collect(Collectors.toMap(l -> l.get("id"), map -> map));
//        Map<String, Map> c = list.stream().collect(Collectors.toMap(l -> l.get("id"), Function.identity()));

        //3.重复key情况下处理方式返回结果{"1":{"name":"E","id":"1","age":"F"}}
//        Map<String, Map> d = list.stream().collect(Collectors.toMap(l -> l.get("id"), Function.identity(), (key1, key2) -> key2));

        //4.重复key情况下指定返回数据类型处理方式返回结果{"1":{"name":"E","id":"1","age":"F"}}
//        Map<String, Map> e = list.stream().collect(Collectors.toMap(l -> l.get("id"), Function.identity(), (key1, key2) -> key2, LinkedHashMap::new));


        //5.list根据key合并并转map;返回结果{"1":[{"name":"B","id":"1","age":"C"},{"name":"E","id":"1","age":"F"}]}
//        Map<String, List<Map>> lableGbType = list.stream().collect(Collectors.groupingBy(l -> (String) l.get("id")));

        //6.根据key提取list中指定的值转List数组;返回结果["1","1"]
//        List<String> ids = list.stream().map(m -> (String) m.get("id")).collect(Collectors.toList());


        //7.数组去重并转list
      /*  String[] str = "1,1,2,3,4,5,".split(",");
        List<String> listNames = Arrays.stream(str).filter(name -> !isEmpty(name)).distinct().collect(Collectors.toList());*/

    }


}

 

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值