在Java中,Set是一個不允許重復元素的集合。以下是幾種常見的去重方法:
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("A");
set.add("B");
set.add("A"); // 重復元素,不會被添加到集合中
System.out.println(set); // 輸出:[B, A]
}
}
import java.util.LinkedHashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Set<String> set = new LinkedHashSet<>();
set.add("A");
set.add("B");
set.add("A"); // 重復元素,不會被添加到集合中
System.out.println(set); // 輸出:[A, B]
}
}
import java.util.TreeSet;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Set<String> set = new TreeSet<>();
set.add("A");
set.add("B");
set.add("A"); // 重復元素,不會被添加到集合中
System.out.println(set); // 輸出:[A, B]
}
}
import java.util.Objects;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Set<MyObject> set = new MySet<>();
set.add(new MyObject("A"));
set.add(new MyObject("B"));
set.add(new MyObject("A")); // 重復對象,不會被添加到集合中
System.out.println(set); // 輸出:[MyObject{value='A'}, MyObject{value='B'}]
}
}
class MyObject {
private String value;
public MyObject(String value) {
this.value = value;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MyObject myObject = (MyObject) o;
return Objects.equals(value, myObject.value);
}
@Override
public int hashCode() {
return Objects.hash(value);
}
}
class MySet<T> implements Set<T> {
// 實現Set接口的方法,如add、remove、contains等
}
這些方法都可以實現Java Set的去重功能,具體使用哪種方法取決于你的需求。