如何初始化比较器?它说变量可能尚未初始化[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何初始化比较器?它说变量可能尚未初始化[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

这是一个非常简单的问题,但我无法弄清楚Java对我的要求。现在来演示,我只需要代码:

Comparator<Integer> c;      

if (c.compare(5, 3) < 0) {
    System.out.println("yep, it's less");
}

同时当然还要导入比较器import java.util.Comparator;

NetBeans告诉我“变量c可能尚未初始化”。我该怎么做才能初始化c

干杯

答案

这就是你想要的(Java 8)

import java.util.Comparator;

public class ComparatorDemo {
    public static void main(String... args) {

        // (1) Defining a custom comparator using lambda
        // Comparator<Integer> c = (Integer a, Integer b) -> a - b;

        // (2) comparingInt takes a lambda which maps from object you want to compare to an int
        Comparator<Integer> c = Comparator.comparingInt(a -> a);

        if (c.compare(3, 5) < 0)
            System.out.println("Yes, It's less");
    }
}

然而,使用比较器,在稍微复杂的类的情况下会更有意义。例如,如果您希望比较器使用其x坐标比较两个点,您可以执行此操作

import java.util.Comparator;

class Point {
    private int x;
    private int y;

    public Point(int x, int y) { this.x = x; this.y = y; }
    public int getY() { return y; }
    public void setY(int y) { this.y = y; }
    public int getX() { return x; }
    public void setX(int x) { this.x = x; }
}

public class ComparatorDemo {
    public static void main(String... args) {
        Comparator<Point> pc = Comparator.comparing(Point::getX);
        Point p1 = new Point(1, 2);
        Point p2 = new Point(2, 2);
        if (pc.compare(p1, p2) < 0) {
           System.out.println("Yes, it's less"); 
        }
    }
}

以上是关于如何初始化比较器?它说变量可能尚未初始化[重复]的主要内容,如果未能解决你的问题,请参考以下文章

缺少有关变量的警告可能尚未初始化

延迟初始化健全性检查:变量可能尚未初始化

可能尚未为Cursor android初始化局部变量

导致 java:240 的 switch 语句(可能尚未初始化)

Spring io @Autowired:空白的最终字段可能尚未初始化

在Python中初始化一个固定大小的数组[重复]