Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于person类参数的优先级序列_Java_Class_Priority Queue - Fatal编程技术网

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)