2015-02-06 69 views
0

我有一個java中的雙打列表,我想要一個結果列表,並按照特定索引按升序排序。如何僅對列表的特定部分進行排序?

List<Double> DList=new ArrayList(); 

testList.add(0.5); 
testList.add(0.2); 
testList.add(0.9); 
testList.add(0.1); 
testList.add(0.1); 
testList.add(0.1); 
testList.add(0.54); 
testList.add(0.71); 
testList.add(0.71); 
testList.add(0.71); 
testList.add(0.92); 
testList.add(0.12); 
testList.add(0.65); 
testList.add(0.34); 
testList.add(0.62); 
testList.add(0.5); 
testList.add(0.2); 
testList.add(0.9); 
testList.add(0.1); 
testList.add(0.1); 
testList.add(0.1); 
testList.add(0.54); 

我必須從索引7進行排序。 我該怎麼做?

+2

你想獨自離開第7個元素,但排序休息名單? (只是檢查我是否理解這個權利) – immibis 2015-02-06 06:20:00

+0

3 upvotes的一個問題,與最小的研究,在API文檔中有一個答案和[Java教程中的專用部分](http://docs.oracle.com/javase/tutorial /collections/interfaces/list.html)(特別是範圍視圖操作部分)。 – 2015-02-06 07:18:44

+0

你需要更多的幫助嗎?或者我的答案能解決你的問題嗎? – Adam 2015-02-09 06:52:08

回答

5
  • List.subList(startIndex, endIndex)創建一個「支持」的集合,它可以看到您的原始列表,也就是我認爲的「代理」。
  • Collections.sort()將只排序子列表,任何掉期實際上將發生在最初的名單

的JavaDoc中這更清楚地解釋比我可以管理:

這種方法消除了對顯式範圍操作(數組通常存在的 排序)的需要。任何期望 列表的操作都可以通過傳遞子列表視圖 而不是整個列表來用作範圍操作。例如,下面的語句從列表中使用你原來的問題,刪除一個 範圍的元素

list.subList(from, to).clear(); 

List<Double> list = new ArrayList<Double>(); 
list.add(0.5); 
list.add(0.2); 
list.add(0.9); 
list.add(0.1); 
list.add(0.1); 
list.add(0.1); 
list.add(0.54); 
list.add(0.71); 
list.add(0.71); 
list.add(0.71); 
list.add(0.92); 
list.add(0.12); 
list.add(0.65); 
list.add(0.34); 
list.add(0.62); 
list.add(0.5); 
list.add(0.2); 
list.add(0.9); 
list.add(0.1); 
list.add(0.1); 
list.add(0.1); 
list.add(0.54); 
Collections.sort(list.subList(7, list.size())); 
相關問題