嘿,我已经叫类人,看起来像下面
PersonClass[] person= {
new PersonClass(90234234434L, "Name", "Surname", Age, "Street", Priority),
...
...
};
然后,我创建阵列
ArrayDeque<String> arrayDeque = new ArrayDeque<>();
编辑:我的错误,我已经在使用
PriorityQueue<String> priorityQueue = new PriorityQueue<>
我尝试了许多方法,但无法解决,如何按优先级值对此人员数组进行排序。如果不清楚,请询问。谢谢您的帮助。
答案 0 :(得分:1)
如果要创建优先级队列,请使用PriorityQueue
。假设在PersonClass
上获得优先级值的方法是getPriority
,则可以执行以下操作:
PriorityQueue<PersonClass> priorityQ = new PriorityQueue<>(Comparator.comparing(PersonClass::getPriority));
答案 1 :(得分:1)
您可以使用PersonClass
对Comparable
对象进行排序。
首先,您必须在implements
中Comparable
PersonClass
并覆盖如下所示的compareTo
方法,
@Override
public int compareTo(PersonClass person) {
return this.Priority - person.Priority;
}
然后,您可以使用sort
中的Arrays
方法对方法中的人员数组进行排序
Arrays.sort(array)
答案 2 :(得分:0)
您可以使用Java提供的PriorityQueue:https://docs.oracle.com/javase/8/docs/api/java/util/PriorityQueue.html
如果对象不是原始类型,则需要提供一个比较器。
然后使用add()
方法来填充它。然后使用poll()
获取第一个元素并将其从队列中删除:
PriorityQueue pq = new PriorityQueue(new PersonComparator());
for (PersonClass person : persons) {
pq.add(person);
}
// later
PersonClass firstInQueue = pq.poll();