仅使用绝对值对数组进行排序并显示实际值
打印绝对排序的数组。请参阅示例输出以进行说明。仅使用绝对值对数组进行排序并显示实际值
输入:
9 -2 10 3 -5 34 -22 7
我想输出:
-2 3 -5 7 9 10 -22 34
我与Arrays.sort(a[]);
试图请帮我:
谢谢
与Java 8中,您可以使用Lambda和Math.abs这样的:
Integer[] array = {9,-2,10,3,-5,34,-22,7};
Arrays.sort(array, (a,b) -> (Integer.compare(Math.abs(a), Math.abs(b))));
Stream.of(array).forEach(a -> System.out.println(a));
感谢4castle的建议。或者使用比较
Arrays.sort(array, Comparator.comparingInt(Math::abs));
你可以得到数字的绝对值,那么你可以做的排序
在Java
double f = Math.abs(-2);
给你值2然后你就可以进行排序。
好的谢谢..但做Math.abs(-2)后,我不能得到相同的输出 –
使用sort
有一个额外的比较:
Arrays.sort(a, new AbsComparator());
比较本身看起来是这样的:
class AbsComparator extends Comparator<Integer>() {
@Override
public int compare(Integer i1, Integer i2) {
return Math.abs(i1) < Math.abs(i2);
}
}
一个简洁的方式来做到这一点是
Arrays.sort(array, Comparator.comparingInt(Math::abs));
例子。
输入:[9,-2,10,3,-5,34,-22,7]
输出:[-2,3,-5,7,9,10,-22 ,34]
Integer[] array = {9,-2,10,3,-5,34,-22,7}; Arrays.sort(array, Comparator.comparingInt(Math::abs)); System.out.println(Arrays.toString(array));
好的谢谢..但我得到不兼容的类型: –
我可以在这里运行它,也许你的输入数组不是整数,但双打或什么? –
'Math.abs()'可能会帮助你。 –
k谢谢..我如何写逻辑@MuratK。 –