Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用lambda和自定义比较器类的排序列表不起作用_Java_Lambda - Fatal编程技术网

Java 使用lambda和自定义比较器类的排序列表不起作用

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);

我试图使用lambda和自定义比较器类“VirusSorter”按名称对对象列表进行排序,但我不知道为什么 主代码

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());
}
“不做任何事情”是否意味着返回意外的返回值,或引发异常?请将您的问题添加为返回值是什么,以及预期值是什么。如果引发异常,请包括异常堆栈跟踪的所有文本。