java - 使用 lambda 排序列表和自定义比较器类不起作用
问题描述
我正在尝试使用 lambda 和自定义比较器类“VirusSorter”按名称对对象列表进行排序,但它什么也没做我不知道为什么主代码
List<Virus> tmpVir = new ArrayList<>(OuterClass.getSvi_virusi());
tmpVir.stream()
.sorted(new VirusSorter())
.forEach(System.out::println);
比较器类:
class VirusSorter implements Comparator<Virus> {
@Override
public int compare(Virus o1, Virus o2) {
if(o1.getNaziv().compareTo(o2.getNaziv().toUpperCase()) == 1)
{
return 1;
}
else if(o1.getNaziv().compareTo(o2.getNaziv().toUpperCase()) == -1)
{
return -1;
}
else
return 0;
}
}
解决方案
比较输入是o2.getNaziv().toUpperCase()
and o1.getNaziv()
(没有调用使其大写),所以它永远不会比较 like 和 like。
尝试类似的东西
public int compare(Virus o1, Virus o2) {
return o1.getNaziv().compareToIgnoreCase(o2.getNaziv());
}
推荐阅读
- apache - 无法禁用 apache http->https 重定向
- botframework - 如何使用 QnaId 查询知识库
- java - 如何从 Map 中过滤特定键
当 key 是 flatjson 时 - unity3d - 如何获取下拉组件?
- mysql - 编组为 JSON 时如何处理 MySQL 中的空值
- c - 如何实现可靠的UDP快速传输文件?
- python - 当我尝试检查单词的每个字母是否在文件中时没有输出
- python-2.7 - cobra.mit.request.QueryError:无法处理查询,结果数据集太大
- c# - 如何在 .Net Core+React 项目中创建 wwwroot 文件夹?
- ios - 在 UICollectionView 中跟踪上传进度正在复制单元格