• Stream流对list<map>的操作


    1. Map map = new HashMap<>();
    2. map.put("name","张三");
    3. map.put("age","30");
    4. map.put("sex","男");
    5. map.put("addr","深圳");
    6. List> list = new ArrayList<>();
    7. list.add(map);
    8. map = new HashMap<>();
    9. map.put("name","李四");
    10. map.put("age","31");
    11. map.put("sex","男");
    12. map.put("addr","北京");
    13. list.add(map);
    14. map = new HashMap<>();
    15. map.put("name","王五");
    16. map.put("age","35");
    17. map.put("sex","男");
    18. map.put("addr","深圳");
    19. list.add(map);
    20. // 根据addr住址分组
    21. Map>> addr = list.stream().collect(Collectors.groupingBy(m -> MapUtils.getString(m, "addr")));
    22. System.out.println("分组"+addr);
    23. // 遍历分组后的数据
    24. addr.forEach((k,v)->{
    25. System.out.println("map中的key:"+k);
    26. v.forEach((kk)->{
    27. System.out.println("listMap中的数据"+kk);
    28. });
    29. });
    30. // 过滤,保留匹配的数据
    31. List> mapStream = list.stream().filter(m -> MapUtils.getString(m, "addr").equals("深圳")).collect(Collectors.toList());
    32. System.out.println("过滤:"+mapStream);
    33. // 过滤,第一条匹配的数据
    34. Optional> first = list.stream().filter(m -> MapUtils.getString(m, "addr").equals("深圳")).findFirst();
    35. System.out.println("过滤:"+first);
    36. // 去重
    37. List collect = list.stream().map(m -> MapUtils.getString(m, "addr")).distinct().collect(Collectors.toList());
    38. System.out.println("去重"+collect);
    39. // 升序
    40. List> sort1 = list.stream().sorted(Comparator.comparing(m -> MapUtils.getString(m, "age"))).collect(Collectors.toList());
    41. System.out.println("升序"+sort1);
    42. // 降序
    43. List> sort2 = list.stream().sorted(Comparator.comparing(m -> MapUtils.getString((Map) m, "age")).reversed()).collect(Collectors.toList());
    44. System.out.println("降序:"+sort2);
    45. //创建城市
    46. List cityList = new ArrayList();
    47. cityList.add("北京;上海;深圳;");
    48. cityList.add("广州;武汉;杭州;");
    49. // 将数据按照逗号分割组成完整的字符串
    50. String collect1 = cityList.stream().map(c -> c.split(";")).flatMap(Arrays::stream).collect(Collectors.joining(","));
    51. System.out.println("将数据按照逗号分割组成完整的字符串"+collect1);

     输出结果:

    分组{北京=[{sex=男, name=李四, addr=北京, sage=31}], 深圳=[{sex=男, name=张三, addr=深圳, age=30}, {sex=男, name=王五, addr=深圳, age=35}]}
    map中的key:北京
    listMap中的数据{sex=男, name=李四, addr=北京, age=31}
    map中的key:深圳
    listMap中的数据{sex=男, name=张三, addr=深圳, age=30}
    listMap中的数据{sex=男, name=王五, addr=深圳, age=35}
    过滤:[{sex=男, name=张三, addr=深圳, age=30}, {sex=男, name=王五, addr=深圳, age=35}]
    过滤:Optional[{sex=男, name=张三, addr=深圳, age=30}]
    去重[深圳, 北京]
    升序[{sex=男, name=张三, addr=深圳, age=30}, {sex=男, name=李四, addr=北京, age=31}, {sex=男, name=王五, addr=深圳, age=35}]
    降序:[{sex=男, name=王五, addr=深圳, age=35}, {sex=男, name=李四, addr=北京, age=31}, {sex=男, name=张三, addr=深圳, age=30}]
    将数据按照逗号分割组成完整的字符串北京,上海,深圳,广州,武汉,杭州

  • 相关阅读:
    8000字专访:跨越增速低谷,多媒体正面临稍纵即逝的机遇
    SOLIDWORKS 2024 Electrical全新升级
    TCP通信-快速入门
    LeetCode-141. 环形链表【哈希表,快慢指针】
    [激光原理与应用-36]:《光电检测技术-3》- 光学测量基础 - 光电效应与光电探测器的基本原理
    TI xWR系列毫米波雷达如何使用MATLAB自动连接串口?
    Android开发之科大讯飞语音合成与播报
    GCC编译器
    叮~程序员,你的专属1024程序员节已到账,请注意查收!
    又一个Java面试神器!!!
  • 原文地址:https://blog.csdn.net/xnian_/article/details/137964207