在Java中,有幾種不重復(fù)的集合(也稱為Set),它們可以存儲(chǔ)不重復(fù)的元素。這些集合是:
HashSet:這是一個(gè)基于哈希表的Set實(shí)現(xiàn),它以O(shè)(1)的時(shí)間復(fù)雜度支持添加、刪除和查詢?cè)亍K槐WC元素的順序,因?yàn)樵氐拇鎯?chǔ)位置是由元素的哈希值決定的。HashSet使用equals()和hashCode()方法來比較和計(jì)算元素的哈希值。
TreeSet:這是一個(gè)基于紅黑樹的Set實(shí)現(xiàn),它以O(shè)(log n)的時(shí)間復(fù)雜度支持添加、刪除和查詢?cè)亍KWC元素按照自然順序或者自定義順序排序。TreeSet使用compareTo()方法來比較元素。
LinkedHashSet:這是一個(gè)基于哈希表和鏈表的Set實(shí)現(xiàn),它以O(shè)(1)的時(shí)間復(fù)雜度支持添加、刪除和查詢?cè)亍KWC元素按照插入順序排序,因?yàn)樵厥峭ㄟ^鏈表鏈接的。LinkedHashSet使用equals()和hashCode()方法來比較和計(jì)算元素的哈希值。
下面是一些簡(jiǎn)單的示例,展示了如何使用這些集合:
import java.util.*;
public class SetExample {
public static void main(String[] args) {
// HashSet example
Set<String> hashSet = new HashSet<>();
hashSet.add("apple");
hashSet.add("banana");
hashSet.add("orange");
hashSet.add("apple"); // adding duplicate element
System.out.println("HashSet: " + hashSet);
// TreeSet example
Set<Integer> treeSet = new TreeSet<>();
treeSet.add(5);
treeSet.add(3);
treeSet.add(8);
treeSet.add(3); // adding duplicate element
System.out.println("TreeSet: " + treeSet);
// LinkedHashSet example
Set<String> linkedHashSet = new LinkedHashSet<>();
linkedHashSet.add("apple");
linkedHashSet.add("banana");
linkedHashSet.add("orange");
linkedHashSet.add("apple"); // adding duplicate element
System.out.println("LinkedHashSet: " + linkedHashSet);
}
}
在上面的示例中,我們使用三個(gè)不同的集合類型:HashSet、TreeSet和LinkedHashSet來存儲(chǔ)字符串或整數(shù)元素。我們嘗試添加重復(fù)的元素,并打印每個(gè)集合來查看它們是否保留了不重復(fù)的元素。