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

标签 java sorting arraylist

我正在为图像实现中值切割算法,并且我有一个包含所有像素的 ArrayList,但现在我需要根据一个颜色 channel 对其进行排序。这是我的 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;
    }
}

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

最佳答案

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

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 进行排序。

您可以为绿色和蓝色创建另外两个比较器

关于java - 对对象的 ArrayList 进行排序,但使用更改的排序键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33065314/

相关文章:

java - 在我的应用程序中使用 auth/admin/realms/myrealm/users 时的瓶颈

java - 如何确定一个列表是否以相同的顺序包含在另一个列表中(在 Java 中)?

java - 哪种方法更适合查找数组列表中元素的频率?

java - 使用java集合框架对文本文件中的两列进行排序

javafx:如何格式化双重属性以进行绑定(bind)?

java - 是否可以有选择地设置 JavaFx 中 TableCell 内容的样式?

java - 为一组参与者找到最佳时间段的算法

Python:有没有一种方法可以仅使用字符串中选定的字符对字符串进行排序?

algorithm - 低内存排序

javascript - 数组按两次分组并计算出现次数