Java 基于person类参数的优先级序列
嘿,我给下面这个人打过电话Java 基于person类参数的优先级序列,java,class,priority-queue,Java,Class,Priority Queue,嘿,我给下面这个人打过电话 PersonClass[] person= { new PersonClass(90234234434L, "Name", "Surname", Age, "Street", Priority), ... ... }; 然后我创建一个数组 ArrayDeque<String> arrayDeque = new ArrayDeque<>(); 编辑:我错了,我已
PersonClass[] person= {
new PersonClass(90234234434L, "Name", "Surname", Age, "Street", Priority),
...
...
};
然后我创建一个数组
ArrayDeque<String> arrayDeque = new ArrayDeque<>();
编辑:我错了,我已经在使用
PriorityQueue<String> priorityQueue = new PriorityQueue<>
我尝试了很多方法,但我无法解决,如何按优先级值对此人数组进行排序。如果有什么不清楚的地方,请询问。提前感谢您的帮助。如果要创建优先级队列,请使用PriorityQueue。假设PersonClass上获取优先级值的方法是getPriority,则可以执行以下操作:
PriorityQueue<PersonClass> priorityQ = new PriorityQueue<>(Comparator.comparing(PersonClass::getPriority));
您可以使用Java提供的PriorityQueue: 如果对象不是基元类型,则需要提供比较器 然后使用add方法填充它。然后使用poll获取第一个元素并将其从队列中移除:
PriorityQueue pq = new PriorityQueue(new PersonComparator());
for (PersonClass person : persons) {
pq.add(person);
}
// later
PersonClass firstInQueue = pq.poll();
可以使用Comparable对PersonClass对象进行排序
首先,您必须在PersonClass中实现Comparable并覆盖compareTo方法,如下所示
@Override
public int compareTo(PersonClass person) {
return this.Priority - person.Priority;
}
然后可以使用数组中的sort方法对方法中的person数组进行排序
哪个参数用于优先级?优先级的intiger值介于0和10之间
Arrays.sort(array)