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

java-8 – Java8:在同一方法输出上过滤和映射

发布时间:2020-12-15 05:14:01 所属栏目:Java 来源:网络整理
导读:我们试图将下面的代码重构为 java 8: ListString list = new ArrayList();IteratorObj i = x.iterator();while (i.hasNext()) { String y = m(i.next().getKey()); if (y != null) { list.add(y); }}return list; 到目前为止,我们已经提出: return x.strea
我们试图将下面的代码重构为 java 8:

List<String> list = new ArrayList<>();
Iterator<Obj> i = x.iterator();
while (i.hasNext()) {
   String y = m(i.next().getKey());
   if (y != null) {
      list.add(y);
   }
}
return list;

到目前为止,我们已经提出:

return x.stream().filter(s -> m(s.getKey()) != null).map(t -> m(t.getKey())).collect(Collectors.toList());

但是方法m()在这里被调用了两次.有什么办法吗?

解决方法

那么你可以在映射步骤后进行过滤:

x.stream().map(s -> m(s.getKey())).filter(Objects::nonNull).collect(Collectors.toList());

(编辑:李大同)

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

    推荐文章
      热点阅读