java 两个list 实体合并去重
引言
在Java开发中,我们经常需要对多个List进行合并,并且去除重复的元素。这种需求在实际工作中是非常常见的。本文将介绍如何使用Java的集合类库来实现这一功能,同时提供代码示例和详细的解释。
问题描述
假设我们有两个List,分别为listA和listB,它们的元素类型为实体类Entity。现在的问题是,我们需要将这两个List合并成一个新的List,并且去除重复的实体。
解决方案
我们可以使用Java的集合类库来解决这个问题。具体的步骤如下:
- 创建一个新的List,用于存放合并后的结果。
- 将listA中的元素逐个添加到结果List中。
- 遍历listB中的元素,判断是否已经存在于结果List中,如果不存在则添加到结果List中。
- 返回结果List作为合并后的结果。
下面是一个示例代码:
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Entity {
private int id;
private String name;
public Entity(int id, String name) {
this.id = id;
this.name = name;
}
// 省略getter和setter方法
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Entity entity = (Entity) obj;
return id == entity.id && name.equals(entity.name);
}
@Override
public int hashCode() {
return Objects.hash(id, name);
}
}
public class MergeListExample {
public static void main(String[] args) {
List<Entity> listA = new ArrayList<>();
listA.add(new Entity(1, "A"));
listA.add(new Entity(2, "B"));
List<Entity> listB = new ArrayList<>();
listB.add(new Entity(2, "B"));
listB.add(new Entity(3, "C"));
List<Entity> mergedList = mergeList(listA, listB);
System.out.println(mergedList);
}
public static List<Entity> mergeList(List<Entity> listA, List<Entity> listB) {
Set<Entity> resultSet = new HashSet<>();
resultSet.addAll(listA);
resultSet.addAll(listB);
return new ArrayList<>(resultSet);
}
}
在上面的代码中,我们定义了一个实体类Entity,包含id和name两个属性,并重写了equals和hashCode方法,以便在去重时能够正确判断两个实体是否相等。
然后,我们创建了两个List,分别为listA和listB,分别向其中添加了一些实体。
接下来,我们调用了mergeList方法,将listA和listB作为参数传入。在mergeList方法中,我们使用一个HashSet来存放合并后的结果,通过addAll方法将listA和listB中的元素都添加到resultSet中。由于HashSet会自动去重,所以合并后的结果中不会包含重复的元素。
最后,我们将resultSet转换为一个新的ArrayList,并将其作为mergeList方法的返回结果。
类图
下面是Entity类的类图:
classDiagram
class Entity {
- id : int
- name : String
+ Entity(int, String)
+ getId() : int
+ setId(int) : void
+ getName() : String
+ setName(String) : void
+ equals(Object) : boolean
+ hashCode() : int
}
总结
本文介绍了如何使用Java的集合类库来合并两个List,并且去除重复的元素。我们通过一个实例来演示了具体的步骤,并提供了相应的代码示例。同时,我们还给出了Entity类的类图,以帮助读者更好地理解代码结构。
通过本文的学习,读者应该能够掌握如何使用Java的集合类库来实现List的合并和去重功能。希望本文对您的学习和工作有所帮助!