我們知道我們可以使用Java的分類收集與基於計數的子表
Collections.sort
排序插入所有元素後的列表。
但是,如果一次插入元素一次,也許SortedMap
更有效?
雖然,SortedMap
缺少subList
方法。
我需要的是類似SortedMap
的東西可以有效地插入少量元素多次,並且總是可以通過Comparator
接口自上而下獲得1〜1000個子列表。
有何建議?
我們知道我們可以使用Java的分類收集與基於計數的子表
Collections.sort
排序插入所有元素後的列表。
但是,如果一次插入元素一次,也許SortedMap
更有效?
雖然,SortedMap
缺少subList
方法。
我需要的是類似SortedMap
的東西可以有效地插入少量元素多次,並且總是可以通過Comparator
接口自上而下獲得1〜1000個子列表。
有何建議?
我覺得SortedSet
是NavigableSet
這反過來又喜歡subSet
,tailSet
,headSet
,ceiling
和floor
對這類問題的方法。
所以,你可以這樣做:
SortedSet<Integer> set = new TreeSet<>(Arrays.asList(0,1,2,3,4,5,6,7,8,9));
SortedSet<Integer> subset = set.subSet(3,7);
System.out.println(subset); //[3,4,5,6]
顯然,你可以創建你TreeSet
與任何你想要的Comparator
,並執行搜索的順序,你覺得更方便。
Comparator<Integer> reverse = Collections.reverseOrder();
SortedSet<Integer> set = new TreeSet<>(reverse);
//same thing here
這是一個錯誤的答案。所有子集/尾/頭...和比較器都是基於數值的,而不是基於計數的。 – rufushuang
@rufushuang一個更好的評論應該是:「Edwin,因爲比較者是基於價值的,因爲你提出的所有方法都是這樣,你認爲我可以從中獲得一系列不變的元素,然後」?你可以看到我的評論風格會鼓勵我回來並嘗試改進或糾正我的答案。你可以用蜂蜜比用醋做更多的蒼蠅。 –
This [question](http://stackoverflow.com/questions/8725387/why-is-there-no-sortedlist-in-java)可能會幫助你。 – zencv
@zencv這個問題沒有提到'subList',那正是我需要的 – rufushuang
NavigableSet不支持這些類型的子視圖嗎?我認爲像'NavigableSet.subSet(start,end)'這樣的方法可能可以在這裏工作。 –