首页 > 解决方案 > PriorityQueue 和比较器 - Java

问题描述

尝试创建一个以字符串长度为排序因素的优先级队列,但比较器似乎不起作用。如果我在 SortedSet 上使用相同的运算符,则效果很好。

以下代码打印: [z, CD, ZHE21, CDE2312, ABC1]

而我期待的是:[z,CD,ABC1,ZHE21,CDE2312]

我错过了什么?

PriorityQueue<String> queue = new PriorityQueue<String>(100, new Comparator<String>() {
        public int compare(String a, String b) {
            return Integer.compare(a.length(), b.length());
        }
    });

    queue.add("CDE2312");
    queue.add("ABC1");
    queue.add("ZHE21");
    queue.add("CD");
    queue.add("z");

    System.out.println(queue);

标签: javastringcomparator

解决方案


推荐阅读