import java.util.*;
public class RemoveDuplicateObjects {
public static void main(String[] args) {
// 创建一个包含重复对象的列表
List<MyObject> list = Arrays.asList(
new MyObject(1, "A"),
new MyObject(2, "B"),
new MyObject(1, "A"), // 重复对象
new MyObject(3, "C"),
new MyObject(2, "B") // 重复对象
);
// 方法1: 使用LinkedHashSet去重(保持插入顺序)
Set<MyObject> uniqueSet = new LinkedHashSet<>(list);
List<MyObject> uniqueList = new ArrayList<>(uniqueSet);
// 输出去重后的列表
System.out.println("去重后的列表 (方法1):");
for (MyObject obj : uniqueList) {
System.out.println(obj);
}
// 方法2: 使用Stream API去重(Java 8及以上)
List<MyObject> uniqueListStream = list.stream()
.distinct()
.toList();
// 输出去重后的列表
System.out.println("去重后的列表 (方法2):");
uniqueListStream.forEach(System.out::println);
}
}
class MyObject {
private int id;
private String name;
public MyObject(int id, String name) {
this.id = id;
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MyObject myObject = (MyObject) o;
return id == myObject.id && Objects.equals(name, myObject.name);
}
@Override
public int hashCode() {
return Objects.hash(id, name);
}
@Override
public String toString() {
return "MyObject{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
List<MyObject>,其中包含了几个重复的对象。LinkedHashSet去重:LinkedHashSet会自动去除重复元素,并且保留插入顺序。List转换为LinkedHashSet后再转回List,即可得到去重后的列表。Stream API去重:stream().distinct()会根据对象的equals()和hashCode()方法来去除重复元素。List中。MyObject类:equals()和hashCode()方法。这两个方法用于判断两个对象是否相等。toString()方法用于方便输出对象信息。通过这两种方法,可以有效地去除List中的重复对象。
上一篇:java volatile
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站