如何在 Java 中对颜色数组进行排序

立方体

我有一个颜色。我想要做的是将数组从 RGB 颜色的最低值到 RGB 颜色的最高值进行排序。我尝试使用Arrays.sort()但它不是Arrays.sort()可以处理的可比性我怎样才能做到这一点?

System.out.println("anchors unsorted: " + Arrays.toString(allAnchorColors));
Arrays.sort(allAnchorColors);
System.out.print("anchors sorted: " + Arrays.toString(allAnchorColors));

输出:

anchors unsorted: [java.awt.Color[r=255,g=186,b=34], java.awt.Color[r=255,g=14,b=20], java.awt.Color[r=2,g=255,b=168], java.awt.Color[r=242,g=231,b=255], java.awt.Color[r=255,g=26,b=28], java.awt.Color[r=0,g=65,b=255]]
疯狂程序员

这个问题不是一个容易直接回答的问题,因为Color它至少由三个主要属性组成(不包括 alpha ;)),但间接地,您需要提供一个Comparator可以根据您的要求对颜色进行排序的自定义,例如。

这基本上利用了getRGB将值转换为打包int值的方法,使比较更简单

Color[] colors = {Color.RED, Color.GREEN, Color.BLUE, Color.BLACK, Color.WHITE};
for (Color color: colors) {
    System.out.println(color.getRGB() + "; " + color);
}

Arrays.sort(colors, new Comparator<Color>() {
    @Override
    public int compare(Color o1, Color o2) {
        return o1.getRGB() - o2.getRGB();
    }
});
System.out.println("After");
for (Color color: colors) {
    System.out.println(color.getRGB() + "; " + color);
}

哪个打印出来...

-65536; java.awt.Color[r=255,g=0,b=0]
-16711936; java.awt.Color[r=0,g=255,b=0]
-16776961; java.awt.Color[r=0,g=0,b=255]
-16777216; java.awt.Color[r=0,g=0,b=0]
-1; java.awt.Color[r=255,g=255,b=255]
After
-16777216; java.awt.Color[r=0,g=0,b=0]
-16776961; java.awt.Color[r=0,g=0,b=255]
-16711936; java.awt.Color[r=0,g=255,b=0]
-65536; java.awt.Color[r=255,g=0,b=0]
-1; java.awt.Color[r=255,g=255,b=255]

这种“类型”满足您的要求,事实上,在此BLACK之前WHITE:P

但是,答案保持不变,您需要提供一个自定义Comparator,在根据您的排序算法比较两个值时生成所需的结果

我正在看这个,但有点困惑,因为当我实现你在这里的东西时,我得到了一堆我以前没有的其他颜色

根据您提供给我的可用信息,排序算法不会添加任何新值...

Color[] allAnchorColors = {
    new Color(255, 200, 63),
    new Color(255, 8, 12),
    new Color(0, 255, 148),
    new Color(223, 214, 255),
    new Color(255, 19, 19),
    new Color(0, 76, 255),
};
System.out.println("anchors.length = " + allAnchorColors.length);
System.out.println("anchors unsorted: " + Arrays.toString(allAnchorColors));
Arrays.sort(allAnchorColors, new Comparator<Color>() {
    @Override
    public int compare(Color o1, Color o2) {
        return o1.getRGB() - o2.getRGB();
    }
});
System.out.println("anchors.length = " + allAnchorColors.length);
System.out.print("anchors sorted: " + Arrays.toString(allAnchorColors));

哪个输出...

anchors.length = 6
anchors unsorted: [java.awt.Color[r=255,g=200,b=63], java.awt.Color[r=255,g=8,b=12], java.awt.Color[r=0,g=255,b=148], java.awt.Color[r=223,g=214,b=255], java.awt.Color[r=255,g=19,b=19], java.awt.Color[r=0,g=76,b=255]]
anchors.length = 6
anchors sorted: [java.awt.Color[r=0,g=76,b=255], java.awt.Color[r=0,g=255,b=148], java.awt.Color[r=223,g=214,b=255], java.awt.Color[r=255,g=8,b=12], java.awt.Color[r=255,g=19,b=19], java.awt.Color[r=255,g=200,b=63]]BUILD SUCCESSFUL (total time: 4 seconds)

这意味着,你的代码中有一些你没有向我们展示导致问题的东西

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Java中对对象数组进行排序?

来自分类Dev

如何在Java中对数组进行排序并跟踪索引

来自分类Dev

如何在Java中对对象数组进行排序

来自分类Dev

如何在Java中对数组类型列表进行排序?

来自分类常见问题

如何在Java中对ArrayList进行排序

来自分类Dev

如何在JAVA中对JSONArray进行排序

来自分类Dev

如何在Java中对Arraylist进行排序

来自分类Dev

如何在Java中对书籍进行排序

来自分类Dev

如何在 Java 中对 HashMap 进行排序?

来自分类Dev

如何在Java中对字符串数组中的日期进行排序?

来自分类Dev

如何在Java数组中按字母顺序对自定义对象进行排序?

来自分类Dev

如何在Java中按字母顺序对字符串数组进行排序?

来自分类Dev

如何在Java数组中按字母顺序对自定义对象进行排序?

来自分类Dev

如何在java中根据列(升序)对二维数组进行排序

来自分类Dev

如何在R中对颜色进行排序

来自分类Dev

如何在 Java 中确定数组中的颜色

来自分类Dev

如何在Java数组中的单词中对字母排序?

来自分类Dev

如何在Java中对自定义ArrayList进行排序?

来自分类Dev

如何在Java列表中对最早的时间戳进行排序?

来自分类Dev

如何在java中对arraylist的ArrayList进行排序?

来自分类Dev

如何编写用于在Java中对数组进行排序的Drake排序算法?

来自分类Dev

如何在Java中按整数值的一列对多维字符串数组进行排序?

来自分类Dev

如何将与数组中的ID不匹配的对象与Java中数组中的不同对象进行排序?

来自分类Dev

如何正确地按降序对对象数组进行排序并在Java中搜索它们?

来自分类Dev

如何基于两列的值在Java中对2D数组进行排序

来自分类Dev

如何通过Java中的元素数对2D字符串数组进行排序

来自分类Dev

如何在Java中对arraylist进行反向排序?(仅使用选择排序)

来自分类Dev

Java:如何在子类中设置颜色?

来自分类Dev

如何在Java中调用冒泡排序

Related 相关文章

  1. 1

    如何在Java中对对象数组进行排序?

  2. 2

    如何在Java中对数组进行排序并跟踪索引

  3. 3

    如何在Java中对对象数组进行排序

  4. 4

    如何在Java中对数组类型列表进行排序?

  5. 5

    如何在Java中对ArrayList进行排序

  6. 6

    如何在JAVA中对JSONArray进行排序

  7. 7

    如何在Java中对Arraylist进行排序

  8. 8

    如何在Java中对书籍进行排序

  9. 9

    如何在 Java 中对 HashMap 进行排序?

  10. 10

    如何在Java中对字符串数组中的日期进行排序?

  11. 11

    如何在Java数组中按字母顺序对自定义对象进行排序?

  12. 12

    如何在Java中按字母顺序对字符串数组进行排序?

  13. 13

    如何在Java数组中按字母顺序对自定义对象进行排序?

  14. 14

    如何在java中根据列(升序)对二维数组进行排序

  15. 15

    如何在R中对颜色进行排序

  16. 16

    如何在 Java 中确定数组中的颜色

  17. 17

    如何在Java数组中的单词中对字母排序?

  18. 18

    如何在Java中对自定义ArrayList进行排序?

  19. 19

    如何在Java列表中对最早的时间戳进行排序?

  20. 20

    如何在java中对arraylist的ArrayList进行排序?

  21. 21

    如何编写用于在Java中对数组进行排序的Drake排序算法?

  22. 22

    如何在Java中按整数值的一列对多维字符串数组进行排序?

  23. 23

    如何将与数组中的ID不匹配的对象与Java中数组中的不同对象进行排序?

  24. 24

    如何正确地按降序对对象数组进行排序并在Java中搜索它们?

  25. 25

    如何基于两列的值在Java中对2D数组进行排序

  26. 26

    如何通过Java中的元素数对2D字符串数组进行排序

  27. 27

    如何在Java中对arraylist进行反向排序?(仅使用选择排序)

  28. 28

    Java:如何在子类中设置颜色?

  29. 29

    如何在Java中调用冒泡排序

热门标签

归档