我有两个列表
List<myObject> list1 = new ArrayList<>();
list1.add("544");
list1.add("545");
list1.add("546");
list1.add("547");
list1.add("548");
list1.add("549");
List<myObject> list2 = new ArrayList<>();
list2.add("547");
list2.add("548");
现在我想从list1中删除list2并返回list1。所以我的最终返回列表看起来像
List<myObject> list1 = new ArrayList<>();
list1.add("544");
list1.add("545");
list1.add("546");
list1.add("549");
我想在Java8中这样做。我在java7中做到了它并且工作正常但我想在Java8中使用它。任何人都可以帮助我吗?
答案 0 :(得分:3)
方法1
您可以使用removeAll
方法从其他列表中删除一个列表中的项目。
要获得重复项,您可以使用retainAll
方法,尽管您使用该方法的方法也很好(并且可能更有效)。
list1.removeAll(列表2);
方法2
您可以使用org.apache.commons.collections.ListUtils并在一行中创建您想要的所有内容。
List resultList = ListUtils.subtract(list, list2);
方法3
对于Java 8,您可以使用Streams:
List<Integer> diff = list1.stream()
.filter(i -> !list2.contains(i))
.collect (Collectors.toList());