我有int[]
处理颜色(它包含重新缩放为1x1以获得“平均”颜色的图像颜色)。我有这个东西,必须检索我最接近数组的颜色:
public static int getNearestColor(int[] colors, int color) {
return colors.stream()
.min(Comparator.comparingInt(i -> Math.abs(i - color)))
.orElseThrow(() -> new NoSuchElementException("No value present"));
}
但是,当我这样做时,它返回的颜色比输入的颜色更远[[远]],但是数组包含的颜色比输入的颜色更接近,this是我的问题,我不知道不明白吗?
我有一个int []处理颜色(它包含重新缩放为1x1以获得“平均”颜色的图像颜色)。我有这个东西必须检索我最接近的数组颜色:public static ...Arrays.stream(colors)
。 IntStream
除了自然顺序外,没有其他方法可以进行比较。您可以先映射到差异(abs(i - color)
),但是现在您已删除了要查找的信息(原始颜色),因此也将不起作用。装箱吧。这将导致以下代码,该代码与您的代码完全一样,只不过此代码可以编译和运行。然后,我还将添加一个测试用例,使其成为一个独立的示例: