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

将foreach转换为Java 8过滤器流

发布时间:2020-12-15 04:49:44 所属栏目:Java 来源:网络整理
导读:我有以下代码 MapString,ListString map= new HashMap();map.put("a",Arrays.asList("a1"));map.put("b",Arrays.asList("a2"));ListString result = new ArrayList();ListString list = new ArrayList();list.add("a");list.add("c");for (String names : li
我有以下代码

Map<String,List<String>> map= new HashMap<>();
map.put("a",Arrays.asList("a1"));
map.put("b",Arrays.asList("a2"));

List<String> result = new ArrayList<>();

List<String> list = new ArrayList<>();
list.add("a");
list.add("c");

for (String names : list) {
    if (!map.containsKey(names)) {
          result.add(names);
    }
}

我试图将其迁移到Java 8.我做错了什么?

list.stream()
    .filter(c -> !map.containsKey(Name))
    .forEach(c -> result.add(c));

但我的病情没有评估

解决方法

它应该是

list.stream().filter(c-> !map.containsKey(c)).forEach(result::add);

更好的方法是:

List<String> result = list.stream().filter(c -> !map.constainsKey(c)).collect(Collectors.toList());

(编辑:李大同)

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

    推荐文章
      热点阅读