在Java中,使用比较器,是否可以对列表中特定位置的元素进行排序?如果是这样,怎么样?
示例:列表blabla.constraint1.isActive = true;
要排序的元素的索引{1,2,3,4,10,6,7,8}
按降序排列,结果为{3,4,7}
。
答案 0 :(得分:1)
大概你事先知道具体的位置?如果是这样,请创建一个包含要排序的元素的新列表,对列表进行排序,然后将原始列表中的元素替换为已排序的列表,一次一个元素。
答案 1 :(得分:0)
这样的事情会起作用吗?您将构造Comparator,其中包含值列表和要排序的索引列表:
private static class MyComparator implements Comparator<Integer>{
private ArrayList<Integer> indexes;
private ArrayList<Integer> vals;
public MyComparator(ArrayList<Integer> indexes, ArrayList<Integer> vals){
this.indexes = indexes;
this.vals = vals;
}
@Override
public int compare(Integer arg0, Integer arg1) {
if(indexes.contains(vals.indexOf(arg0)) && indexes.contains(vals.indexOf(arg1))){
return Integer.compare(arg1, arg0);
}
return 0;
}
}