Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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 优先级队列排序字符串_Java_Sorting_Priority Queue - Fatal编程技术网

Java 优先级队列排序字符串

Java 优先级队列排序字符串,java,sorting,priority-queue,Java,Sorting,Priority Queue,我需要使用PriorityQueue对Person对象进行排序 个人类别: public class Person implements Comparable<Person>{ private String firstName; private String lastName; public Person(String firstName, String lastName){ this.firstName = firstName;

我需要使用PriorityQueue对Person对象进行排序

个人类别:

    public class Person implements Comparable<Person>{
    private String firstName;
    private String lastName;

    public Person(String firstName, String lastName){
       this.firstName = firstName;
       this.lastName = lastName;
    }

    public String getFirstName() {return firstName;}

    public String getLastName() {return lastName;}

    public String toString(){
       return "Name: " + firstName + " " + lastName + "\n";
    }

    public int compareTo(Person p){
       String pname1 = firstName + lastName;
       String pname2 = p.firstName + p.lastName;
       return pname1.compareTo(pname2);
    }
首先: 请移开

implements Comparable<Person>
从个人类,因为你不大声做任何改变

第二: 比较器类只有compare(tob1,t2ob2)方法,没有公共int compareTo(persona,personb)。 所以请创建compare(tob1,t2ob2)并将@Override注释放在上面,以确保您做的一切都是正确的

所以毕竟在你的比较器类中

@Override
public int compare(Person a, Person b){
//..your code
}

其余的代码看起来不错,快速查看…

首先,您必须从
person类及其所有实现中删除
可比较的接口
: 试着这样做:

import java.util.Comparator;
    public class LastNameComparator implements Comparator<Person>{    
    @Override
    public int compare(Person o1, Person o2) {

        return o1.lastname.compareTo(o2.lastname);
    }
    }

您是否还需要使用
PriorityQueue
呢?按照错误消息告诉您的操作:
不会覆盖compare(Person,Person)
-您将其命名为compareTo@override注释会告诉您错误,因为compareTo不会覆盖任何内容。
implements Comparable<Person>
 public int compareTo(Person p){
       String pname1 = firstName + lastName;
       String pname2 = p.firstName + p.lastName;
       return pname1.compareTo(pname2);
    }
@Override
public int compare(Person a, Person b){
//..your code
}
import java.util.Comparator;
    public class LastNameComparator implements Comparator<Person>{    
    @Override
    public int compare(Person o1, Person o2) {

        return o1.lastname.compareTo(o2.lastname);
    }
    }
Collections.sort(pers,new LastNameComparator());
    Iterator<Person> it = pers.iterator();
    while(it.hasNext()){
        System.out.println(it.next());
       }