Java 如何仅对列表的特定部分进行排序?

Java 如何仅对列表的特定部分进行排序?,java,android,arrays,sorting,Java,Android,Arrays,Sorting,我有一个java中的double列表,我想要一个结果列表,按照特定索引升序排序 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(

我有一个java中的double列表,我想要一个结果列表,按照特定索引升序排序

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);
List 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执行排序。 我该怎么做?

  • 创建一个“备份”集合,可以看到您的原始列表,我想这就是“代理”
  • Collections.sort()只对子列表进行排序,任何交换实际上都会在原始列表中进行
JavaDoc对此的解释比我所能理解的更清楚:

此方法消除了(对对象的)显式范围操作的需要 通常存在于数组中的排序)。任何需要 通过传递子列表视图,可以将列表用作范围操作 而不是一个完整的列表。例如,下面的习惯用法删除了 列表中的元素范围

使用原始问题的示例

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()));
List List=new ArrayList();
列表。添加(0.5);
列表。添加(0.2);
增加(0.9);
列表。添加(0.1);
列表。添加(0.1);
列表。添加(0.1);
增加(0.54);
增加(0.71);
增加(0.71);
增加(0.71);
增加(0.92);
增加(0.12);
增加(0.65);
增加(0.34);
增加(0.62);
列表。添加(0.5);
列表。添加(0.2);
增加(0.9);
列表。添加(0.1);
列表。添加(0.1);
列表。添加(0.1);
增加(0.54);
Collections.sort(list.subList(7,list.size());

是否要保留前7个元素,但对列表的其余部分进行排序?(只是检查我是否理解这一点)对一个问题投3票,这个问题只需稍加研究,就可以在API文档和(特别是范围视图操作部分)中找到答案。您需要更多的帮助吗,还是我的答案解决了您的问题?
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()));