2015-02-06 65 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())); 
相关问题