如何根据条件对数组进行排序?
在Python中,我可以做类似的事情
arr.sort(key=lambda x: x/(10**len(str(x))-1),reverse=True)
示例:
arr = [3,30,34,5,9]
排序后
arr = [9,5,34,3,30]
如何使用Java实现相同功能?
答案 0 :(得分:1)
例如,为了方便起见,假设arr
被定义为:
Integer[] arr = new Integer[]{1,2,3,4,5}
您可以通过以下方式实现Java等效:
Arrays.sort(arr, Comparator.comparingInt((Integer x) -> x/((int)Math.pow(10, x.toString().length()-1))).reversed());
如果arr
是List<Integer>
,则可以执行以下操作:
arr.sort(Comparator.comparingInt((Integer x) -> x/((int)Math.pow(10, x.toString().length()-1))).reversed());
答案 1 :(得分:1)
或者,如果您不想修改现有的数组arr
,则可以使用:
int[] sortedArr = Arrays.stream(arr)
.boxed()
.sorted(Comparator.comparingDouble(
(Integer x) -> x / (Math.pow(10, x.toString().length() - 1))).reversed())
.mapToInt(i -> i)
.toArray();