stream比较两个list
时间: 2023-11-17 22:04:33 浏览: 26
比较两个list的常用方法是使用zip函数将两个list中的元素一一比较,然后使用循环结构进行比较。其中一个常见的比较方法是比较这两个list的每个元素是否相等,并且这两个list的顺序也必须完全一致。还有一种比较方法是通过set集合将这两个list中的元素放入集合中,从而判断这两个list中的元素是否完全一致。当然,在对比两个list时还可以考虑对list进行排序,然后再进行对比,这样可以更好地判断两个list是否相等。
相关问题
stream流两个list去重
你可以使用流(Stream)来对两个列表进行去重操作。首先,将两个列表合并为一个流,然后使用`distinct()`方法去除重复的元素。以下是一个示例代码:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<>();
List<Integer> list2 = new ArrayList<>();
// 添加一些元素到列表1和列表2
list1.add(1);
list1.add(2);
list1.add(3);
list2.add(3);
list2.add(4);
list2.add(5);
// 合并两个列表为一个流,并去重
Stream<Integer> stream = Stream.concat(list1.stream(), list2.stream()).distinct();
// 将流转换为列表
List<Integer> result = stream.collect(Collectors.toList());
// 输出结果
System.out.println(result);
}
}
```
运行以上代码会输出:`[1, 2, 3, 4, 5]`。这是合并并去重后的结果列表。
java 两个list stream filter属性比较
假设你有两个List,每个List包含一个或多个对象,并且你想要使用Java 8的Stream API过滤它们,以便仅保留两个List中相同属性的对象。你可以使用Stream的filter()方法和equals()方法来实现这一点。
以下是一个示例代码,假设你有两个Person对象列表,每个Person对象都具有名字和年龄属性:
```
List<Person> list1 = Arrays.asList(
new Person("Alice", 25),
new Person("Bob", 30),
new Person("Charlie", 35)
);
List<Person> list2 = Arrays.asList(
new Person("Alice", 25),
new Person("David", 40),
new Person("Eve", 45)
);
```
你可以使用以下代码来过滤出两个List中具有相同名字和年龄属性的Person对象:
```
List<Person> result = list1.stream()
.filter(p1 -> list2.stream()
.anyMatch(p2 -> p2.getName().equals(p1.getName()) && p2.getAge() == p1.getAge()))
.collect(Collectors.toList());
```
这段代码首先使用list1的stream()方法创建一个Stream,然后使用filter()方法过滤掉list1中不符合条件的Person对象。在filter()方法中,我们使用list2的stream()方法创建一个新的Stream,并使用anyMatch()方法检查是否存在与当前Person对象相同名字和年龄的对象。如果任何一个匹配,则返回true,filter()方法将保留该Person对象。最后,collect()方法将过滤后的结果收集到一个List中。