使用Comparator对列表中的特定元素进行排序

时间:2017-06-28 19:47:51

标签: java sorting comparator

在Java中,使用比较器,是否可以对列表中特定位置的元素进行排序?如果是这样,怎么样? 示例:列表blabla.constraint1.isActive = true; 要排序的元素的索引{1,2,3,4,10,6,7,8} 按降序排列,结果为{3,4,7}

2 个答案:

答案 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;
        }

    }