对对象的ArrayList进行排序,但使用更改的排序键

时间:2015-10-11 13:08:35

标签: java sorting arraylist

我正在为图像实现中值切割算法,我有一个包含所有像素的ArrayList,但现在我需要根据一个颜色通道对其进行排序。这是我的Pixel类。

public class Pixel implements Comparable<Pixel>{
    public int x,y;
    public double[] colors;

    public Pixel(int x, int y, double[] colors ){
        this.x=x;
        this.y=y;
        this.colors=colors;
    }

    @Override
    public int compareTo(Pixel compareNode) {
        //not sure what to do here
        return 0;
    }
}

colors数组分别保存[0],[1]和[2]中的RGB值,但是当我重写compareTo()方法时,我不知道如何按特定颜色通道排序。我只是要实现自己的排序方法吗?

1 个答案:

答案 0 :(得分:2)

要按特定频道排序,您可以为每种颜色创建比较器。例如,要按红色值排序,您可以使用以下示例

public static class RedComparator implements Comparator<Pixel> {
    @Override
    public int compare(Pixel p1, Pixel p2) {
        return Double.compare(p1.colors[0], p2.colors[0]);
    }
}

然后你可以使用 Collections.sort(yourArrayList, new RedComparator())以红色对ArrayList进行排序。

您可以为绿色和蓝色

创建另外两个比较器