我有以下课程:
IntArray&
此类在逻辑上封装了事件及其优先级。我正在编写一个框架,将 n 这些事件的数量作为输入,它将触发 n 中的顶部 k 事件;我只希望获得优先级最高的 k 事件。
我想通过让EventPriority类实现 Comparable 来实现这一点:
public class EventPriority {
Event myEvent;
Double priority;
}
并使用 BoundedTreeSet ,其最大尺寸为 k 。如果插入项目会导致集合的大小超出最大大小,则会从集合中删除最后一个元素。
但是,如果事件具有相同的事件,则EventPriority类的两个对象在逻辑上是相同的。所以:
@Override
public int compareTo(EventPriority other) {
return other.priority.compareTo(priority);
}
在这种情况下, firstPriority 在逻辑上与 secondPriority 相同,但它们只有不同的优先级值。
从我在线阅读的所有内容来看, compareTo()方法与 equals()不一致并不是一个好主意方法
那么在这种情况下我该怎么办?
答案 0 :(得分:0)
假设您有priority
的getter,Comparator.comparing()
使创建自定义比较器变得简单:
Comparator<EventPriority> comparator = Comparator.comparing(EventPriority::getPriority);