gpt4 book ai didi

java - 如何将特定比较器转换为 Lambda 表达式?

转载 作者:行者123 更新时间:2023-12-02 08:07:46 24 4
gpt4 key购买 nike

我有一个管理歌曲列表,所以这是我现在对歌曲进行排序的标准。我如何将其“转换”为 lambda 表达式?

gestionCancionList.sort(new Comparator<GestionCancion>() {
@Override
public int compare(GestionCancion t1, GestionCancion t2){
return t1.vecesQueSeRepite == t2.vecesQueSeRepite ?
t1.song.dameInterprete().compareTo(t2.song.dameInterprete())
: (int)(t2.vecesQueSeRepite - t1.vecesQueSeRepite);
}
}

最佳答案

更简单:

Comparator<GestionCancion> aName = (t1,t2) -> t1.vecesQueSeRepite == t2.vecesQueSeRepite ? 
t1.song.dameInterprete().compareTo(t2.song.dameInterprete())
: (int)(t2.vecesQueSeRepite - t1.vecesQueSeRepite);

参数类型由比较器的泛型类型隐含。

编辑:它可以比上面的更简单。比较器不需要单独定义。 lambda 表达式可以立即传递给排序方法。同样在这种情况下,参数的类型由集合对象的泛型类型隐含。因此:

gestionCancionList.sort((t1,t2) -> t1.vecesQueSeRepite == t2.vecesQueSeRepite ? 
t1.song.dameInterprete().compareTo(t2.song.dameInterprete())
: (int)(t2.vecesQueSeRepite - t1.vecesQueSeRepite));

关于java - 如何将特定比较器转换为 Lambda 表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40741117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com