这个问题有一个关于如何使用多行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表达式(没有比较器)。
如果您打算仅使用lambdas
执行此操作,那么这将适用于列表
和数组
。这假设您的group
和age
字段是int。
Comparator<Item> comp = (o1, o2) -> {
int cmp = Integer.compare(o1.getGroup(), o2.getGroup());
cmp = cmp == 0 ? Integer.compare(o1.getAge(), o2.getAge()) : cmp;
cmp = cmp == 0 ? o1.getName().compareTo(o2.getName()) : cmp;
return cmp;
};
list.sort(comp);
Arrays.sort(items, comp);
但是我会使用List
并按以下方式执行:
list.sort(Comparator.comparing(Item::getGroup)
.thenComparing(Item::getAge)
.thenComparing(Item::getName));
甚至您的< code>lambda表达式也是一个< code >比较器。没有某种< code >比较器,无论你如何构建它,你都无法进行比较。
问题内容: 这是我的清单: 我想按列表排序,如果等于则按,如果等于则按。但是到目前为止,我只能使用Lambda表达式按一个属性排序: 如果我尝试 原来是错误的… 问题答案: 将lambda 表达式 更改为lambda {block} ,而不必指定参数类型:
你好我想对新创建的LinkedList进行升序排序,列表中的所有元素都是随机装箱的。我的任务是用比较器对它们进行排序,但我不允许编写实现比较器的类,而是应该用lambda表达式对其进行排序。这是我目前的代码: 到目前为止,我尝试使用集合和列表中的排序方法,但无法进一步帮助我。非常感谢您提前帮助我。
问题内容: 有人可以给我看一个简单的示例,如何使用新的lambda语法在Java 8中按字母顺序排序。 问题答案: 对于字符串,这将工作
问题内容: 在Python中,我试图按日期与lambda排序。我无法理解我的错误消息。消息是: 我的电话是 问题答案: 采用 在Python 2.x上,该函数按以下顺序使用其参数: 因此,如果没有,您传入的函数将被视为带有2个参数的函数。
我试着取一个数字列表,过滤掉偶数,然后平方这些偶数,这样原始列表中的偶数就平方了。这是我的代码: 我尝试了一些其他的方法,但这是我目前所处的位置