如何初始化比较器?它说变量可能尚未初始化[重复]
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");
}
}
}
以上是关于如何初始化比较器?它说变量可能尚未初始化[重复]的主要内容,如果未能解决你的问题,请参考以下文章
导致 java:240 的 switch 语句(可能尚未初始化)