用java stream流写一个两个list去重
时间: 2023-06-03 17:08:07 浏览: 250
好的,这是一道关于Java编程的问题。以下是代码示例:
```java
List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> list2 = Arrays.asList(4, 5, 6, 7, 8);
List<Integer> distinctList = Stream.concat(list1.stream(), list2.stream())
.distinct()
.collect(Collectors.toList());
System.out.println(distinctList);
```
这段代码使用Java 8的Stream API将两个List合并并去重,最后得到一个新的List。输出结果将会是:
```
[1, 2, 3, 4, 5, 6, 7, 8]
```
希望这个回答能够帮助你。如果你有任何其他问题,可以继续问我。
相关问题
java两个list用stream流去重
可以使用 `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。
list对象数组根据两个字段去重java使用stream流
使用Java 8的Stream API可以更简洁地实现根据两个字段去重的操作。具体步骤如下:
1. 将List对象数组转换为Stream流。
2. 使用Stream的distinct()方法,根据对象的a和b字段组合进行去重。
3. 将去重后的Stream流转换回List对象数组。
下面是Java代码示例:
```
List<Object> list = // 原始List对象数组
List<Object> result = list.stream()
.distinct()
.collect(Collectors.toList());
```
其中,distinct()方法使用对象的equals()方法进行判断两个对象是否相同,因此需要在对象类中重写equals()方法,以便正确判断对象相同的条件。例如,对于包含a和b两个字段的对象类Object,可以重写equals()方法如下:
```
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof Object)) {
return false;
}
Object other = (Object) obj;
return this.a.equals(other.a) && this.b.equals(other.b);
}
```