我有兴趣找出一种方法,该方法返回一个在另一个列表中不存在的元素列表。
例如:
例如:
List<Integer> multiplesOfThree = ... // 3,6,9,12 etc
List<Integer> evens = ... // 2,4,6,8 etc
List<Integer> others = multiplesOfThree.except(evens) // should return a list of elements that are not in the other list
你要如何做到这一点? 我发现了一种方法,但它有些笨拙且难以阅读....
multiplesOfThree.stream()
.filter(intval -> evens.stream().noneMatch(even -> even.intValue() == intval.intValue()))
removeAll
从性能角度来看是不错的,特别是在你真正想要改变源集合的情况下。然而,使用不可变方法(返回一个新的集合并删除匹配元素)更加推荐,因为有很多好的理由支持这种方法。 - Per Lundberg