"我想只留下这 list1 里 Map 和 list2 的 Map 键值匹配一样的内容, 怎么写好呢 list1.stream()...... List> list1 = new ArrayList(); List> list2 = new ArrayList();"

JAVA8 Stream 双重循环

我想只留下这 list1 里 Map 和 list2 的 Map 键值匹配一样的内容, 怎么写好呢 list1.stream()......

List<Map<String,Object>> list1 = new ArrayList();  
List<Map<String,Object>> list2 = new ArrayList();
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    2149 引用 • 7244 回帖 • 1056 关注
  • Q&A

    提问之前请先看一下这篇文章 《提问的智慧》精读注解版,好的问题比好的答案更有价值。

    791 引用 • 4953 回帖 • 609 关注
感谢    关注    收藏    赞同    反对    举报    分享
被采纳的回答
  • linker  

    把 list2 转成 map

7 回帖    
请输入回帖内容...
  • linker      

    把 list2 转成 map

    2 回复 
    感谢    赞同    反对    举报    分享       回复
  • Gersr            

    好了好了 写出来了 类似的一个方法

    List<Map<String, Object>> collect = list1.stream()  
            .filter(m1 ->  
                    list2.stream()//.peek(System.out::println)  
      .anyMatch(m2 -> m1.get("height").toString().equals(m2.get("height").toString())  
                    )  
            ).collect(Collectors.toList());  
    collect.forEach(System.out::println);
    
    感谢    赞同    反对    举报    分享       回复
  • Gersr      

    还有啥更好的办法吗 0.0 刚学不久

    感谢    赞同    反对    举报    分享       回复
  • Gersr            

    等等 你说的 map 是什么意思, 大概什么写法

    感谢    赞同    反对    举报    分享       回复
  • crick77      

    你考虑一下 map 也是集合, list 也是集合, 为什么要用 list 装 map

    1 回复 
    感谢    赞同    反对    举报    分享       回复
  • Gersr            

    难道还可以再精简吗?

    感谢    赞同    反对    举报    分享       回复
  • wenandlu      

    其实不要太在意代码的精简,因为 stream 也只是一种语法糖而已,最后实现部分还是用了循环去做到的,所以一旦有复杂点的循环我还是觉得用 for 去做比较好,还可以提高代码的可读性

    感谢    赞同    反对    举报    分享       回复
请输入回帖内容...