"我想只留下这 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 技术具有卓越的通用性、高效性、平台移植性和安全性。

    2197 引用 • 7506 回帖 • 985 关注
  • Q&A

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

    1004 引用 • 6433 回帖 • 601 关注
被采纳的回答
  • 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 去做比较好,还可以提高代码的可读性

请输入回帖内容 ...