Java 取两个集合相同元素
时间: 2024-09-09 08:11:23 浏览: 23
在Java中,如果你想要取两个集合(如List或Set)中相同的元素,可以采用多种方法。以下是几种常见的做法:
1. **使用`HashSet`**:将其中一个集合转换为HashSet,因为HashSet不允许有重复元素,所以剩下的就是另一个集合中没有的元素。然后你可以再将这个HashSet与原集合合并得到相同的元素。
```java
Set<String> set1 = new HashSet<>(list1);
set1.retainAll(list2); // 保留list2中存在的元素
```
2. **使用`Intersection`操作**:如果列表支持并行流(Java 8及以上版本),你可以使用`stream()`和`filter()`方法找到两个集合的交集。
```java
List<String> commonElements = list1.stream()
.filter(list2::contains)
.collect(Collectors.toList());
```
3. **循环遍历**:更基础的做法是通过双重循环逐个比较两个集合中的元素,如果有相同的就添加到结果集合。
```java
List<String> common = new ArrayList<>();
for (String elem : list1) {
if (list2.contains(elem)) {
common.add(elem);
}
}
```
相关问题
判断两个集合相同元素
判断两个集合是否包含相同的元素通常涉及比较它们的内容。有几种常见的方法可以实现这个目标:
1. **使用Set数据结构**:将两个集合转换为Set(不包含重复元素),然后比较两个Set是否相等。如果相等,那么原始集合就有相同的元素。
```java
Set<String> set1 = new HashSet<>(list1);
Set<String> set2 = new HashSet<>(list2);
boolean sameElements = set1.equals(set2);
```
2. **遍历并比较**:逐个检查一个集合中的每个元素是否存在于另一个集合中,可以借助于`containsAll()`方法或者双重循环。
```java
boolean sameElements = list1.containsAll(list2) && list2.containsAll(list1);
```
3. **使用交集操作**:计算两个集合的交集,若结果非空,则说明它们有共同的元素。
```java
boolean sameElements = !list1.stream().filter(list2::contains).collect(Collectors.toList()).isEmpty();
```
java8匹配两个集合相同的集合
在Java 8中,可以使用Stream API来比较两个集合是否有相同的元素。你可以使用`filter()`, `distinct()`, 和 `equals()` 方法来完成这个任务。这里是一个简单的步骤:
1. **创建流**:首先将其中一个集合转换为流(stream)。
```java
List<String> list1 = ...; // 第一个集合
List<String> list2 = ...; // 第二个集合
Stream<String> stream1 = list1.stream();
```
2. **过滤并去重**:从第一个流中过滤出与第二个集合中存在的元素,并去除重复项。
```java
Stream<String> filteredStream = stream1.filter(list2::contains).distinct();
```
3. **检查是否相等**:最后,检查过滤后的流是否等于第二个集合。如果它们有相同的元素并且没有额外的元素,则它们相等。
```java
boolean areEqual = filteredStream.equals(list2);
```