从符合条件的优先级队列中挑选元素

Picking elements from priorityqueue that fit criteria

我有一个 PriorityQueue<SomePlayerObject> 的实例。它是用 Comparator 构造的,它强加了一个与 equals 不一致的顺序:它根据玩家在线的时间排序 SomePlayerObject

SomePlayerObject 有一个方法:boolean isValid().

我想从 PriorityQueuepoll() 第一个符合 isValid returns true 标准的元素(根据自定义比较器)。

这可能吗?

您在这里唯一可以真正理智地做的就是继续调用正常的 poll() 方法,直到它 isValid()。这几乎肯定是你应该做的方式。

您可以在 Java 8 中调用 queue.removeIf(e -> !e.isValid()),但这不会比以前的方法更有效。