当前位置: 首页 > 面试题库 >

Java如何使用PriorityQueue?

穆季萌
2023-03-14
问题内容

我如何对我PriorityQueue要排序的东西进行排序?

另外,offeradd方法之间有区别吗?


问题答案:

使用构造函数重载,该重载采用a Comparator<? super E> comparator并传入一个比较器,该比较器以适合你的排序顺序的方式进行比较。如果你举一个如何排序的例子,如果不确定,我们可以提供一些示例代码来实现比较器。(虽然非常简单。)

正如其他地方所说:offeradd只是不同的接口方法实现。在JDK源代码中,请add致电offer。尽管由于具有指示由于大小限制而无法添加该值的能力,通常addoffer可能具有不同的行为offer,但是这种差异是无限制的,是无关紧要的PriorityQueue

这是一个按字符串长度排序的优先级队列示例:

// Test.java
import java.util.Comparator;
import java.util.PriorityQueue;

public class Test {
    public static void main(String[] args) {
        Comparator<String> comparator = new StringLengthComparator();
        PriorityQueue<String> queue = new PriorityQueue<String>(10, comparator);
        queue.add("short");
        queue.add("very long indeed");
        queue.add("medium");
        while (queue.size() != 0) {
            System.out.println(queue.remove());
        }
    }
}

// StringLengthComparator.java
import java.util.Comparator;

public class StringLengthComparator implements Comparator<String> {
    @Override
    public int compare(String x, String y) {
        // Assume neither string is null. Real code should
        // probably be more robust
        // You could also just return x.length() - y.length(),
        // which would be more efficient.
        if (x.length() < y.length()) {
            return -1;
        }
        if (x.length() > y.length()) {
            return 1;
        }
        return 0;
    }
}

这是输出:

short

medium

very long indeed


 类似资料:
  • 问题内容: 我是线程新手。我如何才能工作,从而使调用它的线程一直等到t完成执行? 这段代码只会冻结程序,因为线程正在等待自身死亡,对吧? 如果我想拥有两个线程,一个线程打印出一半的数组,然后等待另一个线程完成,然后再进行其余操作,该怎么办? 问题答案: 使用这样的东西:

  • 本文向大家介绍如何使用JAVA调用SHELL,包括了如何使用JAVA调用SHELL的使用技巧和注意事项,需要的朋友参考一下 通过ProcessBuilder进行调度 这种方法比较直观,而且参数的设置也比较方便, 比如我在实践中的代码(我隐藏了部分业务代码): 这里有必要解释一下几个参数: RUNNING_SHELL_FILE:要运行的脚本 SHELL_FILE_DIR:要运行的脚本所在的目录; 当

  • 问题内容: 我试图使用开放源代码的Java库来可视化图中的节点和边,但是我完全迷失了。 我的文件夹中有一堆jar文件。单击某些jar文件会使Java swing窗口弹出并显示图形。单击其他jar文件不会执行任何操作。 如果我知道了,我是否会将jar文件与其他文件保存在那里,还是不能使用? 如果我弄清楚了如何使用这些文件,这是否意味着如果我将Java项目转移到另一台计算机上,就必须包括它们?我将如何

  • 我想用这个curl语句做一个请求: 我想创建一个连接到Battle.net(暴雪开发者的API),但我不知道如何实现。我希望有人能帮助我。怪我英语不好。我是这个社区的新手。 错误:

  • 问题内容: 如果我这样做 它打印 问题是,我在代理后面。JVM在Windows的哪里获取代理信息?我该如何设置?我所有其他应用似乎都对我的代理感到非常满意。 问题答案: 从Java 1.5开始,你还可以将实例传递给该方法: 如果你的代理服务器要求身份验证,它将给你响应407。 在这种情况下,你需要以下代码:

  • 问题内容: 我想用于一些Web测试,并且遇到了(https://github.com/detro/ghostdriver)。我已经按照自述文件中的说明进行了构建,并且可以在指定的端口上运行它,但是我不确定如何从Java代码访问Web驱动程序。为了澄清,我已经在ruby中看到了这个示例: 我只是不确定如何从java中执行相同操作。 问题答案: 我相信此链接将回答您的问题。您将需要Selenium 2