это, вероятно, действительно тривиальный вопрос, но как вы добавляете несколько HashSets в PriorityQueue?Java: Как добавить MULTIPLE HashSets в PriorityQueue?
Я попытался это:
PriorityQueue<HashSet<Integer>> priorityQueue = new PriorityQueue<HashSet<Integer>>();
priorityQueue.add(new HashSet<Integer>());
priorityQueue.add(new HashSet<Integer>());
System.out.println(priorityQueue.size());
и это:
PriorityQueue<HashSet<Integer>> priorityQueue = new PriorityQueue<HashSet<Integer>>();
for (int i = 0; i < 81; i++) {
priorityQueue.add(new HashSet<Integer>());
}
, но я получаю сообщение об ошибке, что говорит HashSet не может быть приведен к сопоставимому:
Exception in thread "main" java.lang.ClassCastException: java.util.HashSet cannot be cast to java.lang.Comparable
at java.util.PriorityQueue.siftUpComparable(PriorityQueue.java:652)
at java.util.PriorityQueue.siftUp(PriorityQueue.java:647)
at java.util.PriorityQueue.offer(PriorityQueue.java:344)
at java.util.PriorityQueue.add(PriorityQueue.java:321)
at attempt1.PQTest.main(PQTest.java:11)
«Элементы очереди приоритетов упорядочены в соответствии с их естественным порядком или Компаратором, предусмотренным во время построения очереди, в зависимости от того, какой конструктор используется. \ [... \] Очередь приоритетов, основанная на естественном упорядочении также ** не допускает вставки несопоставимых объектов (это может привести к ClassCastException) **] (https://docs.oracle.com/javase/8/docs/api/java/util/PriorityQueue.html) «. – Turing85
Чтобы иметь приоритет, вы должны быть в состоянии сказать, что должно быть первым. –