首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何创建保留FIFO行为的Java PriorityBlockingQueue?

创建保留FIFO行为的Java PriorityBlockingQueue,可以通过自定义比较器实现。以下是一个完整的示例代码:

代码语言:java
复制
import java.util.Comparator;
import java.util.concurrent.PriorityBlockingQueue;

public class Main {
    public static void main(String[] args) {
        // 创建一个具有自定义比较器的PriorityBlockingQueue
        PriorityBlockingQueue<String> queue = new PriorityBlockingQueue<>(10, new FIFOComparator());

        // 向队列中添加元素
        queue.add("A");
        queue.add("B");
        queue.add("C");

        // 从队列中取出元素
        System.out.println(queue.poll()); // 输出:A
        System.out.println(queue.poll()); // 输出:B
        System.out.println(queue.poll()); // 输出:C
    }

    // 自定义比较器,实现FIFO行为
    static class FIFOComparator implements Comparator<String> {
        private int counter = 0;

        @Override
        public int compare(String o1, String o2) {
            // 比较器的compare方法会在队列中的元素进行排序时被调用
            // 为了保证FIFO行为,我们可以在比较时返回一个唯一的递增值
            return Integer.compare(counter++, 0);
        }
    }
}

在这个示例中,我们创建了一个具有自定义比较器的PriorityBlockingQueue,并向队列中添加了三个元素。然后,我们从队列中取出这些元素,并按照它们被添加到队列中的顺序输出。

这个示例中的自定义比较器实现了FIFO行为,因为它在比较时返回了一个递增的唯一值。这样,队列中的元素就会按照它们被添加到队列中的顺序进行排序。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券