在Java中,Set是一个不允许重复元素的集合。以下是几种常见的去重方法:
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Set<Integer> set = new HashSet<>();
set.add(1);
set.add(2);
set.add(3);
set.add(2); // 重复元素,不会被添加到集合中
System.out.println(set); // 输出:[1, 2, 3]
}
}
import java.util.LinkedHashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Set<Integer> set = new LinkedHashSet<>();
set.add(1);
set.add(2);
set.add(3);
set.add(2); // 重复元素,不会被添加到集合中
System.out.println(set); // 输出:[1, 2, 3]
}
}
import java.util.TreeSet;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Set<Integer> set = new TreeSet<>();
set.add(1);
set.add(2);
set.add(3);
set.add(2); // 重复元素,不会被添加到集合中
System.out.println(set); // 输出:[1, 2, 3]
}
}
import java.util.Objects;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Set<MyInteger> set = new MySet<>();
set.add(new MyInteger(1));
set.add(new MyInteger(2));
set.add(new MyInteger(3));
set.add(new MyInteger(2)); // 重复元素,不会被添加到集合中
System.out.println(set); // 输出:[1, 2, 3]
}
}
class MyInteger implements Comparable<MyInteger> {
private int value;
public MyInteger(int value) {
this.value = value;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MyInteger myInteger = (MyInteger) o;
return value == myInteger.value;
}
@Override
public int hashCode() {
return Objects.hash(value);
}
@Override
public int compareTo(MyInteger o) {
return Integer.compare(this.value, o.value);
}
}
class MySet<T extends Comparable<T>> implements Set<T> {
// 实现Set接口的方法,如add、remove、contains等
}
这些方法都可以实现Java Set的去重功能,具体使用哪种方法取决于你的需求和场景。