java. list 去除list交集
时间: 2023-11-15 13:00:11 浏览: 149
要去除Java List中的交集,可以使用retainAll()方法和removeAll()方法。retainAll()方法将保留两个列表中都存在的元素,而removeAll()方法将删除两个列表中都存在的元素。因此,我们可以使用removeAll()方法来去除交集。
下面是一个示例代码:
```
List<String> list1 = new ArrayList<>(Arrays.asList("a", "b", "c", "d"));
List<String> list2 = new ArrayList<>(Arrays.asList("c", "d", "e", "f"));
list1.removeAll(list2); // 去除交集
System.out.println(list1); // 输出 [a, b]
```
在这个示例中,我们创建了两个列表list1和list2,它们都包含一些元素。然后,我们使用removeAll()方法从list1中去除了与list2中相同的元素,最后输出了list1的内容。
相关问题
java List集合去掉另一个List集合的交集部分
可以使用Java 8的Stream API来实现这个功能。具体步骤如下:
1. 将第二个List集合转换为Set集合,提高查找效率。
2. 使用stream()方法将第一个List集合转换成流。
3. 使用filter()方法过滤出不包含第二个List集合中元素的元素。
4. 使用collect()方法将流转换回List集合。
下面是代码示例:
```java
List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
List<Integer> list2 = new ArrayList<>(Arrays.asList(3, 4, 5, 6, 7));
Set<Integer> set2 = new HashSet<>(list2); // 转换为Set集合
List<Integer> result = list1.stream()
.filter(item -> !set2.contains(item)) // 过滤掉第二个List集合中的元素
.collect(Collectors.toList()); // 转换回List集合
System.out.println(result); // 输出 [1, 2]
```
这段代码输出的结果是一个List集合,其中包含第一个List集合去掉第二个List集合中元素后的剩余元素。
在java当中求两个List<String>的交集
在Java中,求两个List<String>的交集可以通过以下几种方式实现:
1. 使用retainAll()方法:
List接口提供了一个retainAll()方法,该方法可以保留列表中那些也包含在指定集合中的元素。因此,你可以将其中一个列表作为基础,然后调用retainAll()方法,并将另一个列表作为参数传递。这样,第一个列表就会只保留与第二个列表共有的元素,即它们的交集。
```java
List<String> list1 = Arrays.asList("a", "b", "c", "d");
List<String> list2 = Arrays.asList("b", "c", "e");
list1.retainAll(list2);
System.out.println(list1); // 输出 [b, c]
```
2. 使用Stream API:
如果你使用的是Java 8或更高版本,可以利用Stream API来求两个列表的交集。通过stream()方法将列表转换为流,然后使用filter()方法过滤出同时存在于两个列表中的元素,最后收集结果到一个新的列表中。
```java
List<String> list1 = Arrays.asList("a", "b", "c", "d");
List<String> list2 = Arrays.asList("b", "c", "e");
List<String> intersection = list1.stream()
.filter(list2::contains)
.collect(Collectors.toList());
System.out.println(intersection); // 输出 [b, c]
```
3. 使用Set集合:
另一种方法是先将两个列表转换为Set集合,因为Set自动去除重复元素,并且提供了方便的方法来计算交集。可以使用HashSet来实现这一功能。
```java
List<String> list1 = Arrays.asList("a", "b", "c", "d");
List<String> list2 = Arrays.asList("b", "c", "e");
Set<String> set1 = new HashSet<>(list1);
Set<String> set2 = new HashSet<>(list2);
set1.retainAll(set2);
List<String> intersection = new ArrayList<>(set1);
System.out.println(intersection); // 输出 [b, c]
```
以上是求两个List<String>交集的几种常见方法。你可以根据具体情况选择最适合你需求的方法。
阅读全文
相关推荐















