Java中可以使用Set
来进行对象去重。以下是一个去重示例
List<Object> originalList = ...; // 原始列表
Set<Object> set = new LinkedHashSet<>(originalList); // 使用LinkedHashSet进行去重
List<Object> distinctList = new ArrayList<>(set); // 将去重后的元素重新放入列表中
在这个示例中,首先定义了一个原始列表originalList
,它包含了一些需要去重的对象。然后,使用LinkedHashSet
对originalList
进行去重,最后将去重后的元素重新放入一个列表distinctList
中。 需要注意的是,LinkedHashSet
会保持元素的插入顺序,因此去重后的元素的顺序与原始列表中的顺序相同。如果不需要保持顺序,可以使用HashSet
代替LinkedHashSet
。 此外,如果需要对自定义对象进行去重,需要在自定义对象中实现equals()
和hashCode()
方法,以便让Set
正确判断两个对象是否相等。以下是一个自定义对象的去重示例:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Person)) return false;
Person person = (Person) o;
return age == person.age &&
Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
在这个示例中,Person
类实现了equals()
和hashCode()
方法,以便让Set
正确判断两个Person
对象是否相等。然后,可以使用和之前相同的方法来进行去重:
List<Person> originalList = ...; // 原始列表
Set<Person> set = new LinkedHashSet<>(originalList); // 使用LinkedHashSet进行去重
List<Person> distinctList = new ArrayList<>(set); // 将去重后的元素重新放入列表中
Java 8中的Stream API来进行对象去重。以下是一个使用Stream API进行去重的示例:
List<Object> originalList = ...; // 原始列表
List<Object> distinctList = originalList.stream().distinct().collect(Collectors.toList()); // 使用Stream API进行去重
List<Person> originalList = ...; // 原始列表
List<Person> distinctList = originalList.stream().distinct().collect(Collectors.toList()); // 使用Stream API进行去重