A PriorityQueue
или TreeSet
подойдет вам, если вы хотите иметь постоянный приоритет (очередь - если вы хотите всплыть элементы, набор - если вы хотите сохранить их).
Однако с изменением приоритета вы должны переупорядочивать коллекцию при каждом изменении.Или лучше - перед каждой итерацией.Это должно быть синхронно.
Итак, создайте коллекцию, которая использует пользовательский Comparator
, и при каждом вызове iterator()
переупорядочивает свои элементы.Например, вы можете расширить TreeSet
и переопределить метод iterator()
.Затем вы звоните next()
n
раз.