java - 错误的链表类型
问题描述
我有一个对象的链接列表(书籍,其中字段是标题、作者和其他)。为什么这种按标题排序的实现会给出错误的结果?
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
解决方案
如果你想按字母顺序而不是标题的长度对书籍进行排序,你需要使用这个:
return o1.title.compareTo(o2.title);
推荐阅读
- java - java - 如何在java HashMap中根据产品类别获取产品详细信息?
- php - production.ERROR: stream_socket_enable_crypto(): SSL: Success (Laravel 5.5)
- python - C 运行速度比 PyPy 慢
- r - R将数组拆分为数据框
- php - 将表格导出为 ms word PHP & MS SQL
- python-3.x - 将地理区域划分为大小相等的网格并检索索引位置
- reactjs - React SSR 文档未定义
- amazon-s3 - 动态或通用 bitbucket-pipeline.yml 文件
- android - 从 Firebase 获取特定用户的分数和类别
- android - Android 房间 - 插入行的 id - 来自 ViewModel