首页 > 解决方案 > 错误的链表类型

问题描述

我有一个对象的链接列表(书籍,其中字段是标题、作者和其他)。为什么这种按标题排序的实现会给出错误的结果?

import java.util.*;

public class sort
{
    public static void main(String[] args)
    {
        LinkedList<Book> l = new LinkedList<>();
        l.add(new Book("Vargas Fred", "Il morso della reclusa"));
        l.add(new Book("Postorino Rossella", "Le assaggiatrici"));
        l.add(new Book("Bythell Shaun", "Una vita da libraio"));
        l.add(new Book("Simenon Georges", "Il fondo della bottiglia"));



        Collections.sort(l, new Comparator<Book>() {
            @Override
            public int compare(Book o1, Book o2) {
                return o1.title.length() - o2.title.length();
            }
        });


        for(Book i : l)
        {
            System.out.println(i.title);
        }
    }
}

预期: - Il fundo della bottiglia - Il morso della reclusa - Le assaggiatrici - Una vita da libraio

结果: - Le assaggiatrici - Una vita da libraio - Il morso della reclusa - Il fundo della bottiglia

标签: javalinked-list

解决方案


如果你想按字母顺序而不是标题的长度对书籍进行排序,你需要使用这个:

return o1.title.compareTo(o2.title);

推荐阅读