从符合条件的优先级队列中挑选元素
Picking elements from priorityqueue that fit criteria
我有一个 PriorityQueue<SomePlayerObject>
的实例。它是用 Comparator
构造的,它强加了一个与 equals 不一致的顺序:它根据玩家在线的时间排序 SomePlayerObject
。
SomePlayerObject
有一个方法:boolean isValid()
.
我想从 PriorityQueue
中 poll()
第一个符合 isValid
returns true 标准的元素(根据自定义比较器)。
这可能吗?
您在这里唯一可以真正理智地做的就是继续调用正常的 poll()
方法,直到它 isValid()
。这几乎肯定是你应该做的方式。
您可以在 Java 8 中调用 queue.removeIf(e -> !e.isValid())
,但这不会比以前的方法更有效。
我有一个 PriorityQueue<SomePlayerObject>
的实例。它是用 Comparator
构造的,它强加了一个与 equals 不一致的顺序:它根据玩家在线的时间排序 SomePlayerObject
。
SomePlayerObject
有一个方法:boolean isValid()
.
我想从 PriorityQueue
中 poll()
第一个符合 isValid
returns true 标准的元素(根据自定义比较器)。
这可能吗?
您在这里唯一可以真正理智地做的就是继续调用正常的 poll()
方法,直到它 isValid()
。这几乎肯定是你应该做的方式。
您可以在 Java 8 中调用 queue.removeIf(e -> !e.isValid())
,但这不会比以前的方法更有效。