基于人参数的优先级队列 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)