我需要在Java中有一个等价的compareWith(a,b)方法,在Scala中。我有一个字符串列表,我需要通过比较它们来排序。sortBy只取一个字符串并返回一个分数,但在我的例子中这还不够,我需要将两个字符串相互比较,然后根据哪一个更好返回一个数字。似乎唯一的选择是编写一个自定义case类,将字符串转换为它,然后将它们转换回来。出于性能原因,我希望避免这种情况,因为我有大量的数据要处理。有没有一种方法可以只使用字符串?
compareWith(a,b)
sortBy
rqmkfv5c1#
我想你在找sortWith。sortWith(lt: (A, A) ⇒ Boolean): Repr根据比较函数对此序列进行排序。注意:对于无限大小的集合,不会终止。排序是稳定的。也就是说,相等的元素(由lt确定)在排序后的序列中以与原始序列相同的顺序出现。lt比较函数,用于测试第一个参数是否在第二个参数之前。范例:
sortWith
sortWith(lt: (A, A) ⇒ Boolean): Repr
lt
List("Steve", "Tom", "John", "Bob").sortWith(_.compareTo(_) < 0) = List("Bob", "John", "Steve", "Tom")
ckocjqey2#
我想.sorted会成功的。
.sorted
2条答案
按热度按时间rqmkfv5c1#
我想你在找
sortWith
。sortWith(lt: (A, A) ⇒ Boolean): Repr
根据比较函数对此序列进行排序。
注意:对于无限大小的集合,不会终止。
排序是稳定的。也就是说,相等的元素(由lt确定)在排序后的序列中以与原始序列相同的顺序出现。
lt
比较函数,用于测试第一个参数是否在第二个参数之前。范例:
ckocjqey2#
我想
.sorted
会成功的。