我已經按照升序對int的arraylist進行了排序,但是當我將它複製到集合中時,元素不再被排序。 我使用這個:在同一個集合中複製arraylist的元素java
HashSet<Integer> set = new HashSet<Integer>(sortedArray);
,爲什麼是這樣呢?
我已經按照升序對int的arraylist進行了排序,但是當我將它複製到集合中時,元素不再被排序。 我使用這個:在同一個集合中複製arraylist的元素java
HashSet<Integer> set = new HashSet<Integer>(sortedArray);
,爲什麼是這樣呢?
LinkedHashSet
將保持訂單。 TreeSet
將根據外部Comparator
或通過Comparable
自然排序進行排序。
Set
的一般要點是該順序無關緊要。散列旨在將元素儘可能隨機排列。 LinkedHashSet
維護對元素的引用之間的鏈接列表,因此可以維護訂單。
BitSet
(它不是Set
)可能會或可能不會提供更有效的數據結構。
的HashSet的不排序或維持秩序,而API會告訴你:
它不保證該順序恆久不變。
考慮使用另一種類型的Set,如TreeSet。
@NavidKoochooloo:你以爲是錯的。請再次閱讀我上面發佈的HashSet API的報價。 – 2013-05-12 00:50:09
如果您只關心唯一性,請使用HashSet。如果您在排序後,請考慮TreeSet。
但我正在執行的方法爲我的程序返回一個集合(實際上它是一個uni項目)。在這個項目中我需要對元素進行排序。 – 2013-05-12 00:55:09