gpt4 book ai didi

lambda - 比较器作为 lambda

转载 作者:行者123 更新时间:2023-12-01 01:47:46 31 4
gpt4 key购买 nike

我在 Java library 中有以下方法:

public void setColumnComparator(final int columnIndex, final Comparator<T> columnComparator)

Idea 说它具有以下原型(prototype):
setColumnComparator(columnIndex: Int, columnComparator: ((Any!, Any!) -> Int)!)

我该如何使用它?我知道会是 String ,所以我想要这样的东西,但它不能编译。
setColumnComparator(0, Comparator<String> { a, b -> a.compareTo(b) }

最佳答案

如果你仔细看,你需要传递比较完整值的比较器,而不是列中的值。因此,假设您表中的数据类型是 Car (这样你就有一个 SortableTableView<Car> )并且第一列包含模型名称。然后你会写

setColumnComparator(0, { a, b -> a.modelName.compareTo(b.modelName) }

或更好:
setColumnComparator(0, compareBy({ it.modelName })

(见 https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.comparisons/compare-by.html)

从 IDEA 显示的签名中,您可能有一个 SortableTableView<Any>SortableTableView<*>反而。这确实应该更改为更具体的类型。但即使没有它,如果你能拥有 CarBook :
compareBy({ (it as? Car)?.modelName }, { (it as? Book)?.title })

关于lambda - 比较器作为 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47303355/

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