在 Java 中,使用 Lambda 表达式来匹配两个列表(List)对象的数据是很常见的任务。下面我将介绍三种不同的实现方式,每种方式都会包含详细的步骤流程和示例代码。这些示例假设你已经熟悉 Java 8+ 中的 Lambda 表达式和函数式编程概念。
假设我们有两个 Person
类的列表,每个 Person
对象有 id
和 name
两个属性,我们的目标是根据 id
属性匹配这两个列表中的数据。
这是最基本的方式,使用传统的循环遍历来进行匹配。
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Person> list1 = new ArrayList<>();
List<Person> list2 = new ArrayList<>();
// 添加一些数据到列表中
List<Person> matchedPersons = new ArrayList<>();
for (Person person1 : list1) {
for (Person person2 : list2) {
if (person1.getId() == person2.getId()) {
matchedPersons.add(person1);
break;
}
}
}
// 匹配到的数据在 matchedPersons 列表中
}
}
class Person {
private int id;
private String name;
// 构造函数、getter 和 setter 方法
}
Java 8 引入的 Stream API 可以更优雅地处理集合数据。
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Person> list1 = new ArrayList<>();
List<Person> list2 = new ArrayList<>();
// 添加一些数据到列表中
List<Person> matchedPersons = list1.stream()
.filter(person1 -> list2.stream().anyMatch(person2 -> person2.getId() == person1.getId()))
.collect(Collectors.toList());
// 匹配到的数据在 matchedPersons 列表中
}
}
class Person {
private int id;
private String name;
// 构造函数、getter 和 setter 方法
}
Apache Commons Collections 库提供了用于集合操作的便捷工具类。
添加 Maven 依赖:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>
添加 Gradle 依赖:
implementation 'org.apache.commons:commons-collections4:4.4'
import org.apache.commons.collections4.CollectionUtils;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Person> list1 = new ArrayList<>();
List<Person> list2 = new ArrayList<>();
// 添加一些数据到列表中
List<Person> matchedPersons = (List<Person>) CollectionUtils.intersection(list1, list2);
// 匹配到的数据在 matchedPersons 列表中
}
}
class Person {
private int id;
private String name;
// 构造函数、getter 和 setter 方法
}
这三种方法中,你可以根据你的项目需求和个人偏好选择适合的方式来匹配两个列表对象的数据。