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

时间:2018-12-05 22:58:07

标签: java python arrays sorting comparator

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

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

2 个答案:

答案 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());

如果arrList<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();
相关问题