从自定义比较器获取布尔答案

Cod*_*755 2 java

我已经学会了如何创建自己的Comparator,例如,创建一个简单的比较基于absolute value

class absComparator implements Comparator<Integer> {
    public int compare(Integer a, Integer b) {
        return a * a - b * b;
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,这可以用于自定义排序:

List<Integer> list_1 = new ArrayList<>(Arrays.asList(-3, -2, -1, 0, 1, 2));
list_1.sort(new absComparator());
>>> [0, -1, 1, -2, 2, -3]
Run Code Online (Sandbox Code Playgroud)

所以这一切都很好,但是如果我只想比较基于这个比较器的两个整数来给出一个布尔值怎么办?

// Currently:
System.out.println(-2>1);
>>> false
Run Code Online (Sandbox Code Playgroud)

那么我如何true通过比较-21使用来获得 a absComparator

Joh*_*ica 6

compare直接调用并0使用相同的关系运算符检查结果。如果要检查-2 > 1,请将这两个数字作为参数传入并检查结果是否为> 0

Comparator<Integer> comparator = new absComparator();
System.out.println(comparator.compare(-2, 1) > 0);
Run Code Online (Sandbox Code Playgroud)