java两个list用stream流去重
时间: 2023-08-26 13:09:21 浏览: 110
可以使用 `distinct()` 方法对两个 List 进行去重操作,下面是示例代码:
```java
List<String> list1 = Arrays.asList("a", "b", "c");
List<String> list2 = Arrays.asList("b", "d", "e");
List<String> distinctList = Stream.concat(list1.stream(), list2.stream())
.distinct()
.collect(Collectors.toList());
System.out.println(distinctList); // 输出 [a, b, c, d, e]
```
在这个示例中,我们首先使用 `Stream.concat()` 方法将两个 List 合并为一个 Stream。然后使用 `distinct()` 方法对 Stream 进行去重操作,并使用 `collect()` 方法将结果收集到一个新的 List 中。最后输出去重后的 List。
相关问题
java stream流去重对象List
在Java中,Stream API提供了一种优雅的方式来处理集合并去重。如果你有一个对象列表,每个对象包含一些属性用于唯一标识,你可以使用`distinct()`方法配合Lambda表达式来去除重复的对象。
假设你有一个`Person`类,其中有一个`getName()`方法返回唯一的名称:
```java
class Person {
private String name;
// getters and setters
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null || getClass() != obj.getClass())
return false;
Person person = (Person) obj;
return Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name);
}
}
// 使用Stream去重
List<Person> uniquePeople = people.stream()
.distinct() // 去除重复元素
.collect(Collectors.toList());
```
在这个例子中,`equals()`和`hashCode()`方法用于确定哪些对象被认为是相同的。`distinct()`会基于这两个方法来判断是否应该保留对象。
java 两个List<Object> 去重
在Java中,对于两个List<Object>,可以采用以下两种方式进行去重:
1. 通过HashSet去重
对于两个List<Object>,可以将它们分别转换为HashSet<Object>,再将这两个Set合并为一个Set,最后再将Set转换为List<Object>,即可去重。具体实现如下:
```java
List<Object> list1 = new ArrayList<Object>();
// 添加元素到list1中
List<Object> list2 = new ArrayList<Object>();
// 添加元素到list2中
Set<Object> set = new HashSet<Object>(list1);
set.addAll(list2);
List<Object> resultList = new ArrayList<Object>(set);
```
需要注意的是,如果List<Object>中的元素是自定义的对象,为了能够正确比较对象是否相等,需要在对象类中重写equals和hashCode方法。
2. 通过Java 8 Stream API去重
对于两个List<Object>,可以先将这两个List合并为一个List,再通过Java 8 Stream API进行去重操作,具体实现如下:
```java
List<Object> list1 = new ArrayList<Object>();
// 添加元素到list1中
List<Object> list2 = new ArrayList<Object>();
// 添加元素到list2中
List<Object> resultList = Stream.of(list1, list2)
.flatMap(x -> x.stream())
.distinct()
.collect(Collectors.toList());
```
同样地,如果List<Object>中的元素是自定义的对象,为了能够正确比较对象是否相等,需要在对象类中重写equals和hashCode方法。
以上两种方式均可以实现对两个List<Object>的去重操作,使用哪种方式取决于具体的需求和实现场景。
阅读全文