java如何去重
去除Java集合中的重复元素
使用HashSet可以快速去除重复元素,因为HashSet不允许重复值。将集合转换为HashSet后再转换回原类型即可去重。
List<String> listWithDuplicates = Arrays.asList("a", "b", "a", "c");
Set<String> setWithoutDuplicates = new HashSet<>(listWithDuplicates);
List<String> listWithoutDuplicates = new ArrayList<>(setWithoutDuplicates);
使用Java 8 Stream去重
利用Stream的distinct()方法可以简洁地实现去重。

List<String> listWithDuplicates = Arrays.asList("a", "b", "a", "c");
List<String> listWithoutDuplicates = listWithDuplicates.stream()
.distinct()
.collect(Collectors.toList());
保留原始顺序的去重方法
如果需要保留元素的原始顺序,可以使用LinkedHashSet代替HashSet。
List<String> listWithDuplicates = Arrays.asList("a", "b", "a", "c");
Set<String> setWithoutDuplicates = new LinkedHashSet<>(listWithDuplicates);
List<String> listWithoutDuplicates = new ArrayList<>(setWithoutDuplicates);
自定义对象的去重
对于自定义对象,需要重写equals()和hashCode()方法,确保对象之间的比较逻辑正确。

class Person {
private String name;
private int age;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age && Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
List<Person> people = Arrays.asList(new Person("Alice", 20), new Person("Bob", 25), new Person("Alice", 20));
List<Person> uniquePeople = people.stream()
.distinct()
.collect(Collectors.toList());
使用Apache Commons Collections去重
如果项目中已经引入了Apache Commons Collections库,可以使用CollectionUtils的removeDuplicates方法。
List<String> listWithDuplicates = Arrays.asList("a", "b", "a", "c");
CollectionUtils.removeDuplicates(listWithDuplicates);
使用Guava库去重
Guava库提供了ImmutableSet,可以方便地去除重复元素。
List<String> listWithDuplicates = Arrays.asList("a", "b", "a", "c");
List<String> listWithoutDuplicates = ImmutableSet.copyOf(listWithDuplicates).asList();






