使用lambda和自定义comparator类的java排序列表不起作用

inn6fuwd  于 2021-07-11  发布在  Java
关注(0)|答案(1)|浏览(409)

我试图用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;
    }
}
mklgxw1f

mklgxw1f1#

比较输入为 o2.getNaziv().toUpperCase() 以及 o1.getNaziv() (没有一个使其大写的调用),所以它永远不会比较like和like。
试试这样的

public int compare(Virus o1, Virus o2) {
    return o1.getNaziv().compareToIgnoreCase(o2.getNaziv());
}

相关问题