Collections.sort 是稳定排序吗?结果

我是橙子岳 发布于 2017/06/25 14:48
阅读 513
收藏 0

public class Main {

    public static void main(String[] args) {
        Scanner sin = new Scanner(System.in);
        while (sin.hasNext()) {
            int n = Integer.parseInt(sin.nextLine());
            int flag = Integer.parseInt(sin.nextLine());
            Map<String, Integer> map = new HashMap<>(n);
            for (int i = 0; i < n; i++) {
                String str = sin.nextLine();
                String[] strArray = str.split("\\s+");
                map.put(strArray[0], Integer.parseInt(strArray[1]));
            }
            List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());
            Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {

                @Override
                public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
                    return o1.getValue() - o2.getValue();
                }
            });
            System.out.println(list);
            if (flag == 1) {
                for (int i = 0; i < list.size(); i++) {
                    Map.Entry<String, Integer> e = list.get(i);
                    System.out.println(e.getKey() + " " + e.getValue());
                }
            } else {
                for (int i = list.size() - 1; i >= 0; i--) {
                    Map.Entry<String, Integer> e = list.get(i);
                    System.out.println(e.getKey() + " " + e.getValue());
                }
            }
        }
    }
}

 

 

Console:

3
1
Tom 88
Jack 88
Jim 88
[Jim=88, Tom=88, Jack=88]
Jim 88
Tom 88
Jack 88

加载中
0
OSC首席骠妓大将军
OSC首席骠妓大将军
是根据你传入的比较器进行排序啊,比较器不变排序的结果就不会变
0
Shazi199
Shazi199

取决于比较方法本身

0
为为02
为为02
在Java 6中Arrays.sort()和Collections.sort()使用的是MergeSort,而在Java 7中,内部实现换成了TimSort,TimSort是对归并排序的优化。 jdk自带的排序算法是稳定的性能相对最优的排序。
返回顶部
顶部