Tag: 链表

使Java PriorityQueue成为一个稳定的优先级队列

我试图在Java中实现一个稳定的(先入先出)优先级队列。 假设密钥是一个名字,值是一个年龄,我知道我可以像这样做一个不稳定的优先级队列: Queue<Map.Entry<String, Integer>> pq = new PriorityQueue<Map.Entry<String, Integer>>(100, ageComparator); 这几乎是我所需要的一切,除了在插入(或删除它们)时不维护键值对的顺序。 我发现了一个“解决方法”,它提供了基本上所有相同功能的LinkedList,只是它不包含带有比较器选项的构造函数,而且我觉得它必须更慢,因为我维护了值排序通过在每个队列操作之后调用Collections.sort() 。 所以我觉得有两个选项是我感兴趣的。首先,如何编辑上面的PriorityQueue来维护插入和删除顺序? 或者第二,我如何强制我的LinkedList选项立即使用比较器,而不必在每个操作上调用排序? 谢谢! 编辑: 感谢您发布的第一条评论中的好问题。 通过FIFO,我的意思是,对于具有相同值的键值对,首先应该提取放入的对。

在Kotlin中实现链表

我最近开始学习Kotlin,所以我决定在其中实现一些数据结构。 所以,我试着实现一个单独的链表: package datastructures public class LinkedList { private data class Node(var nodeValue: Int, var next: Node? = null) private var head: Node? = null fun insert(n: Int) { if(head == null) head = Node(n) else { var cur = head while(cur?.next != null) { cur = cur?.next } cur?.next = Node(n) } } fun […]