我正在为图像实现中值切割算法,我有一个包含所有像素的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()方法时,我不知道如何按特定颜色通道排序。我只是要实现自己的排序方法吗?
答案 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进行排序。
您可以为绿色和蓝色
创建另外两个比较器