加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java streams – 如何使用键上的条件来平移集合映射中的所有值

发布时间:2020-12-15 04:35:25 所属栏目:Java 来源:网络整理
导读:我有一张地图.让我们说吧 MapLong,ListMyObj 我想在所有MyObj中创建一个长数组,其中键(long)在另一个set()中找到 anotherSet.contains(long) 使用java流. 我试过了 map.entrySet() .stream() .filter(e-anotherSet(e.getKey())) .flatMap(e.getValue) .colle
我有一张地图.让我们说吧

Map<Long,List<MyObj>>

我想在所有MyObj中创建一个长数组,其中键(long)在另一个set()中找到

anotherSet.contains(long)

使用java流.

我试过了

map.entrySet()
   .stream()
   .filter(e->anotherSet(e.getKey()))
   .flatMap(e.getValue)
   .collect(Collectors.toList);

但它甚至没有编译

解决方法

你有一些语法错误.

这应该产生你想要的列表:

List<MyObj> filteredList = 
    map.entrySet()
       .stream()
       .filter(e->anotherSet.contains(e.getKey())) // you forgot contains
       .flatMap(e-> e.getValue().stream()) // flatMap requires a Function that 
                                           // produces a Stream
       .collect(Collectors.toList()); // you forgot ()

如果要生成数组而不是List,请使用:

MyObj[] filteredArray = 
    map.entrySet()
       .stream()
       .filter(e->anotherSet.contains(e.getKey()))
       .flatMap(e-> e.getValue().stream())
       .toArray(MyObj[]::new);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读