【发布时间】:2018-07-13 00:36:15
【问题描述】:
我正在尝试根据优先级队列中的整数值而不是名称(字符串)值进行出列。例如,[Sally, 4] 应该放在 [John, 1] 之前。因为 4 的优先级高于 1。但是我构建队列的方式是从第一个变量(名称)按字母轮询。非常感谢您朝着正确方向迈出的任何一步,谢谢。
package stackqueuewood;
import java.util.PriorityQueue;
import java.util.ArrayList;
public class StackQueueWood {
public static void main(String[] args) {
ArrayList<String> people = new ArrayList<>();
people.add(person("Tom", 3));
people.add(person("Dick", 4));
people.add(person("Harry", 2));
PriorityQueue<String> pQ = new PriorityQueue<>();
pQ.addAll(people);
System.out.println("The current queue size is: " + pQ.size());
System.out.println("The current queue is: \n" + pQ);
System.out.println(pQ.peek());
pQ.poll();
System.out.println(pQ);
}
public static String person(String name, int priority){
return ("(" + name + ", " + priority + ")");
}
}
【问题讨论】:
-
那么它在哪里解释了我的要求,因为我很难找到它。那些显示单个参数对象。
-
您必须实际创建一个类来模拟
person。那么方法应该大致相同 -
所以方法人应该被删除,并创建一个单独的类来做同样的事情正确吗?这样类就可以作为可以操作的构造函数工作吗?我的方法在哪里不能被操纵?
标签: java queue priority-queue