java - java - 如何使用 compareTo 方法将值插入到 java 中的队列中?
问题描述
我正在尝试将排序后的值插入 Java 中的队列中。我创建了一个 compareTo 方法,需要帮助将其添加到队列中。compareTo 方法在一个类中,而队列在另一个类中。
比较方法:
public int compareTo(Event cmp) {
if(getArrTime() > cmp.arrTime) {
return 1;
}
else if(getArrTime() < cmp.arrTime) {
return -1;
}
else {
return 0;
}
}
这就是我要为插入方法做的事情:
public void enque(Object insertSort) {
//if compareTo is greater than param, append to the front
//if equal, use event type. If it's 'A' append before 'D'
//if compareTo is less than the param, add to end
//return list
}
解决方案
您使用的是什么 Queue 实现?你看过 PriorityQueue 吗?这是一个使用比较器的排序队列。
请参阅此问题的答案:Java 中的排序集合
这是一个使用问题中的 Event 并按 eventType 属性按字母顺序排序的工作示例:
PriorityQueue<Event> queue = new PriorityQueue<>(
new Comparator<Event>() {
@Override
public int compare(Event o1, Event o2) {
int result = o1.getEventType()
.compareTo(o2.getEventType());
return result;
}
});
queue.add(new Event("C"));
queue.add(new Event("A"));
queue.add(new Event("B"));
while(!queue.isEmpty()) {
System.out.println(queue.poll().getEventType());
}
印刷品:A B C
推荐阅读
- javascript - 如果表到达断点,DataTables如何禁用请求
- java - 当我创建可执行 Jar 时程序卡住了
- javascript - tizen 电视日志 - 如何访问它们?
- rust - 理解 Rust 函数参数类型声明
- raspberry-pi - WSO2 IOT 服务器与代理断开连接
- c++ - cpp中的结构中的运算符重载
- mysql - MySQL Server 8.0 远程数据库
- c# - C# 将对象序列化为 JSON 但保留名称
- angular - 从打字稿中的指定位置将元素添加到数组
- vuetify.js - 当我在浏览器上运行此代码时,工具栏出现在底部我怎样才能使它在浏览器顶部