Java 使用lambda和自定义比较器类的排序列表不起作用
我试图使用lambda和自定义比较器类“VirusSorter”按名称对对象列表进行排序,但我不知道为什么 主代码Java 使用lambda和自定义比较器类的排序列表不起作用,java,lambda,Java,Lambda,我试图使用lambda和自定义比较器类“VirusSorter”按名称对对象列表进行排序,但我不知道为什么 主代码 List<Virus> tmpVir = new ArrayList<>(OuterClass.getSvi_virusi()); tmpVir.stream() .sorted(new VirusSorter()) .forEach(System.out::println);
List<Virus> tmpVir = new ArrayList<>(OuterClass.getSvi_virusi());
tmpVir.stream()
.sorted(new VirusSorter())
.forEach(System.out::println);
List tmpVir=newarraylist(OuterClass.getSvi_virusi());
tmpVir.stream()
.sorted(新的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;
}
}
类VirusSorter实现比较器{
@凌驾
公共int比较(病毒o1、病毒o2){
如果(o1.getNaziv().compareTo(o2.getNaziv().toUpperCase())==1)
{
返回1;
}
else if(o1.getNaziv().compareTo(o2.getNaziv().toUpperCase())==-1)
{
返回-1;
}
其他的
返回0;
}
}
比较输入是o2.getNaziv().toUpperCase()
和o1.getNaziv()
(无需调用使其大写),因此它永远不会将like与like进行比较
试试像这样的东西
public int compare(Virus o1, Virus o2) {
return o1.getNaziv().compareToIgnoreCase(o2.getNaziv());
}
“不做任何事情”是否意味着返回意外的返回值,或引发异常?请将您的问题添加为返回值是什么,以及预期值是什么。如果引发异常,请包括异常堆栈跟踪的所有文本。