基于条件 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());
如果 arr
是 List<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();
如何根据条件对数组进行排序?
在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());
如果 arr
是 List<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();