嵌套循环涉及java 8中的条件
发布时间:2020-12-15 04:28:48 所属栏目:Java 来源:网络整理
导读:我有一段代码 ListObj1 result = new ArrayListObj1();for (Obj1 one : list1) { for (Obj2 two : list2) { if (one.getStatus() == two) { result.add(one); } } } 在Java 8中使用流我可以像这样写 list1.stream().forEach(one - { if (list2.stream().anyM
我有一段代码
List<Obj1> result = new ArrayList<Obj1>(); for (Obj1 one : list1) { for (Obj2 two : list2) { if (one.getStatus() == two) { result.add(one); } } } 在Java 8中使用流我可以像这样写 list1.stream().forEach(one -> { if (list2.stream().anyMatch(two -> one.getStatus() == two)) { result.add(one); } }); 这可以大大简化. 解决方法
假设list2包含唯一值,并且您可以对Obj2使用equals而不是==,您可以这样写:
List<Obj1> result = list1.stream() .filter(one -> list2.contains(one.getStatus())) .collect(Collectors.toList()); 虽然将list2元素放入Set会更高效. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |