温馨提示×

java中set如何高效去重

小樊
121
2024-11-21 12:00:34
栏目: 编程语言

在Java中,使用Set集合可以很容易地去重。以下是一些建议:

  1. 使用HashSet:HashSet是基于哈希表实现的,它不允许重复元素。将集合转换为HashSet,可以实现自动去重。
import java.util.Arrays; import java.util.HashSet; import java.util.Set; public class Main { public static void main(String[] args) { Integer[] array = {1, 2, 3, 4, 4, 5, 6, 6, 7}; Set<Integer> set = new HashSet<>(Arrays.asList(array)); System.out.println("去重后的集合: " + set); } } 
  1. 使用LinkedHashSet:LinkedHashSet是基于哈希表和链表实现的,它按照插入顺序维护元素。将集合转换为LinkedHashSet,可以实现保留原始顺序的同时去重。
import java.util.Arrays; import java.util.LinkedHashSet; import java.util.Set; public class Main { public static void main(String[] args) { Integer[] array = {1, 2, 3, 4, 4, 5, 6, 6, 7}; Set<Integer> set = new LinkedHashSet<>(Arrays.asList(array)); System.out.println("去重后的集合(保留原始顺序): " + set); } } 
  1. 针对自定义对象,实现equals()hashCode()方法:为了在Set中去重自定义对象,需要在对象类中实现equals()hashCode()方法。这两个方法用于比较对象是否相等以及确定对象在哈希表中的位置。
import java.util.Objects; import java.util.Set; import java.util.HashSet; 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 == 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); } } public class Main { public static void main(String[] args) { Person[] array = {new Person("Alice", 30), new Person("Bob", 25), new Person("Alice", 30)}; Set<Person> set = new HashSet<>(Arrays.asList(array)); System.out.println("去重后的集合: " + set); } } 

以上方法可以帮助你在Java中高效地去重。根据具体需求选择合适的方法。

0