基于人参数的优先级队列 class
Priority quene based on argument of person class
嘿,我 class 打电话给如下所示的人
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: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();
您可以使用 Comparable
.
对 PersonClass
个对象进行排序
首先你必须 implements
Comparable
在你的 PersonClass
中覆盖 compareTo
方法,如下所示,
@Override
public int compareTo(PersonClass person) {
return this.Priority - person.Priority;
}
然后您可以使用 Arrays
中的 sort
方法对方法中的人员数组进行排序
Arrays.sort(array)
嘿,我 class 打电话给如下所示的人
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: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();
您可以使用 Comparable
.
PersonClass
个对象进行排序
首先你必须 implements
Comparable
在你的 PersonClass
中覆盖 compareTo
方法,如下所示,
@Override
public int compareTo(PersonClass person) {
return this.Priority - person.Priority;
}
然后您可以使用 Arrays
sort
方法对方法中的人员数组进行排序
Arrays.sort(array)