java - 在 Java 中对自定义链表进行排序

标签 java sorting linked-list

我创建了自己的链表实现,用于存储名字和姓氏。现在我试图按姓氏的字母顺序对姓名列表进行排序,但我在这方面遇到了困难。我已经读过有关可能使用 collections.sort 的内容,但我不确定如何修改我的类,以便我可以使用 collections.sort ,或者这是否是一个好方法。以下是我到目前为止所做的事情。如果有人可以帮助我,我将不胜感激。我想要完成的是,当我打印时,它将打印 Joe Rogers、Bill Thomas、Greg West,这意味着它是按姓氏排序的。

编辑:感谢大家的快速回复,我真的很感激。

class Test {
public static void main(String[] args)
{
    LinkedList l = new LinkedList();

    l.insert("Greg", "West");
    l.insert("Joe", "Rogers");
    l.insert("Bill", "Thomas");

    l.print();

    Collections.sort(l) // I am unable to get this to work


}

public static class myLink {
public myLink next;
public String first;
public String last;

public myLink(String first, String last)
{
    this.first = first;
    this.last = last;
}

public void print()
{
    System.out.printf("%s %s\n",first,last);
}
}

public static class LinkedList {
private myLink linkedList;

public LinkedList() 
{
    linkedList = null;
}

public void insert(String first, String last)
{
    myLink li = new myLink(first, last);
    li.next = linkedList;
    linkedList = li;
}

public void print()
{
    myLink c = linkedList;
    while(c != null)
    {
        c.print();
        c = c.next;
    }
}
}
}

最佳答案

LinkedList 适合你。您只需要您的 Person 类和自定义的 Comparator ,如下例所示。

public class Person {
    String first;
    String last;
    public Person(String f, String l) {
        this.first = f;
        this.last = l;
    }
}

public class LinkExample {

    public static void main(String[] args) {
        LinkedList<Person> pList = new LinkedList<Person>();
        pList.add(new Person("AFirst","ZLast"));
        pList.add(new Person("BFirst","BLast"));
        Collections.sort(pList, new Comparator<Person>() { 
           public int compare(Person p1, Person p2) {
            return p1.last.compareTo(p2.last);
           }
        });
        System.out.println(pList.pollFirst().last);
        System.out.println(pList.pollFirst().last);

    }

}

关于java - 在 Java 中对自定义链表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24726675/

相关文章:

java - 如何区分Exchange默认文件夹和自定义文件夹?

javascript - 自定义 Google 可视化表中的排序列

python - 元素的列表比较

arrays - Perl:使用 'splice()' VS 链表插入数组的性能

algorithm - 以大 O 表示法插入已排序链接列表的复杂性是多少?

java - 3D 到 2D 投影

Java MYSQL错误连接关闭后不允许进行任何操作

java - 从子类访问 protected 父类(super class)成员

javascript - Bootstrap Datatables 按部分单元格内容排序

c - 链接列表程序停止工作错误