Set中元素不可以重復,是無序的(這里無序是指存入元素的先后順序與輸出元素的先后順序不一致)
HashSet:內部的數據結構是哈希表,是線程不安全的。
HashSet中保證集合中元素是唯一的方法:通過對象的hashCode和equals方法來完成對象唯一性的判斷。
如果對象的hashCode值不同,則不用判斷equals方法,就直接存到HashSet中。
如果對象的hashCode值相同,需要用equals方法進行比較,如果結果為true,則視為相同元素,不存,如果結果為false,視為不同元素,進行存儲。
注意:如果元素要存儲到HashCode中,必須覆蓋hashCode方法和equals方法。
TreeSet:可以對Set集合中的元素進行排序,是線程不安全的。
TreeSet中判斷元素唯一性的方法是:根據比較方法的返回結果是否為0,如果是0,則是相同元素,不存,如果不是0,則是不同元素,存儲。
TreeSet對元素進行排序的方式:
元素自身具備比較功能,即自然排序,需要實現Comparable接口,並覆蓋其compareTo方法。
元素自身不具備比較功能,則需要實現Comparator接口,並覆蓋其compare方法。
注意:LinkedHashSet是一種有序的Set集合,即其元素的存入和輸出的順序是相同的。