基于条件 Java 的排序(自定义排序)

Sorting based on a criteria Java (Custom Sort)

如何根据条件对数组进行排序?

在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 实现同样的功能?

例如,我们假设 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());

如果 arrList<Integer> 那么你可以这样做:

arr.sort(Comparator.comparingInt((Integer x) -> x/((int)Math.pow(10, x.toString().length()-1))).reversed());

或者,如果您不想修改现有数组 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();