【发布时间】:2020-04-07 15:57:56
【问题描述】:
This question 有一个关于如何使用多行 lambda 表达式对 List 进行排序的答案:
list.sort((o1, o2) -> {
int cmp = o1.getGroup().compareTo(o2.getGroup());
if (cmp == 0)
cmp = Integer.compare(o1.getAge(), o2.getAge());
if (cmp == 0)
cmp = o1.getName().compareTo(o2.getName());
return cmp;
});
不幸的是,这似乎不适用于原始数组int[] arr:
Arrays.sort(arr, (int1, int2) -> {
// some lambda, various if-else statements for example
});
如何在 Arrays.sort() 中使用多行 lambda 表达式对原始数组进行排序?
只要它使用 lambda 表达式(没有比较器),我可以使用任何其他方法(不必使用 Arrays.)。
【问题讨论】:
-
这能回答你的问题吗? java comparator for arrays sort
-
效率不高,但
arr = Arrays.stream(arr).boxed().sorted((int1, int2) -> { /* your logic */ }).mapToInt(Integer::intValue).toArray();可以。 -
@user85421 谢谢。
标签: java arrays sorting lambda