Java int[]比较器

Java int[]比较器,java,Java,正在尝试为int[]编写自定义比较器,如下所示: public class arrayComparator implements Comparator<int[]>{ @Override public int compare(int[] a, int[] b){ return a[1] - b[1]; } } 公共类arrayComparator实现Comparator{ @凌驾 公共整数比较(整数[]a,整数[]b){ 返回a[1]-b[1

正在尝试为int[]编写自定义比较器,如下所示:

public class arrayComparator implements Comparator<int[]>{
    @Override
    public int compare(int[] a, int[] b){
        return a[1] - b[1];
    }
}
公共类arrayComparator实现Comparator{
@凌驾
公共整数比较(整数[]a,整数[]b){
返回a[1]-b[1];
}
}

但这对于
a=[-2147483646,-2147483645],[21474836462147483647]
b=[-2147483646,-2147483645],[21474836462147483647]
的情况是不正确的。我应该如何修改代码?

既然您已经了解了这一点,这里有几种方法

public arrayComparator implements Comparator<int[]>{
    @Override
    public int compare(int[] a, int[] b){
        return a[1] > b[1] ? 1 : a[1] < b[1] ? -1 : 0;
    }
}
publicArrayComparator实现比较器{
@凌驾
公共整数比较(整数[]a,整数[]b){
返回a[1]>b[1]?1:a[1]

publicArrayComparator实现比较器{
@凌驾
公共整数比较(整数[]a,整数[]b){
如果(a[1]>b[1]){
返回1;
}
if(a[1]

publicArrayComparator实现比较器{
@凌驾
公共整数比较(整数[]a,整数[]b){
返回整数。比较(a[1],b[1]);
}
}

既然您已经了解了这一点,下面是几种方法

public arrayComparator implements Comparator<int[]>{
    @Override
    public int compare(int[] a, int[] b){
        return a[1] > b[1] ? 1 : a[1] < b[1] ? -1 : 0;
    }
}
publicArrayComparator实现比较器{
@凌驾
公共整数比较(整数[]a,整数[]b){
返回a[1]>b[1]?1:a[1]

publicArrayComparator实现比较器{
@凌驾
公共整数比较(整数[]a,整数[]b){
如果(a[1]>b[1]){
返回1;
}
if(a[1]

publicArrayComparator实现比较器{
@凌驾
公共整数比较(整数[]a,整数[]b){
返回整数。比较(a[1],b[1]);
}
}

准确地说,为了避免此类问题,要将
int
值与自然顺序进行比较,我们应该始终使用内置的

所以改变

return a[1] - b[1];
进入

顺便说一句,由于比较器是功能接口,我们可以通过lambdas和/或方法参考提供其实现:

Comparator<int[]> arrayComparator1 = (a, b) -> Integer.compare(a[1], b[1]);
Comparator<int[]> arrayComparator2 = Comparator.comparingInt(arr -> arr[1]);
comparatorarraycomparator1=(a,b)->Integer.compare(a[1],b[1]);
比较器arrayComparator2=比较器.comparingInt(arr->arr[1]);


除了主要问题之外,Java普遍接受的编码风格是非原语类型的名称应该以大写字母开头,比如
String
ArrayList
。因此,将
arrayComparator
更改为
arrayComparator

以避免此类问题,要将
int
值与自然顺序进行比较,我们应该始终使用内置的

所以改变

return a[1] - b[1];
进入

顺便说一句,由于比较器是功能接口,我们可以通过lambdas和/或方法参考提供其实现:

Comparator<int[]> arrayComparator1 = (a, b) -> Integer.compare(a[1], b[1]);
Comparator<int[]> arrayComparator2 = Comparator.comparingInt(arr -> arr[1]);
comparatorarraycomparator1=(a,b)->Integer.compare(a[1],b[1]);
比较器arrayComparator2=比较器.comparingInt(arr->arr[1]);

除了主要问题之外,Java普遍接受的编码风格是非原语类型的名称应该以大写字母开头,比如
String
ArrayList
。因此,将
arrayComparator
更改为
arrayComparator

更简单:

Comparator<int[]> intArrayComparator = (a, b) -> Integer.compare(a[1], b[1]);
无需为此创建显式命名的自定义类。

更简单:

Comparator<int[]> intArrayComparator = (a, b) -> Integer.compare(a[1], b[1]);

无需为此创建显式命名的自定义类。

是否要比较[]和[]或[]和[]之间的差异?数组大于或小于另一个数组意味着什么?如果大小不同怎么办?计算差异时会出现整数溢出。是否要比较[]和[]或[]和[]之间的差异?数组大于或小于另一个数组意味着什么?如果它们的大小不同呢?计算差异时会出现整数溢出。这是基于:
公共静态int比较(int x,int y){return(x
这是基于:
公共静态int比较(int x,int y){return return(x