【发布时间】:2016-05-07 01:17:07
【问题描述】:
我有一个 (String, Long, Int, String, String,List[Integer], String, String, String, Long, Long) 的 rdd。我想按元组中的所有字段对其进行排序 也就是说,如果 _._1 相等,则移动到 _._2,否则返回第一次比较的结果。像这样我想继续到元组中的最后一个元素。
下面的解决方案看起来太笨拙了。有没有更好的方法在 scala 中做到这一点?
我正在尝试的是这样的
val customOrdering = new Ordering[(String, Long, Int, String, String,
List[Integer], String, String, String, Long, Long)] {
override def compare(a: (String, Long, Int, String, String,
List[Integer], String, String, String, Long, Long),
b: (String, Long, Int, String, String,
List[Integer], String, String, String, Long, Long)) = {
if (a._1.compare(b._1) == 0) {
if(a._2 == a._2){
...
}
else if(a._2 < a._2) {
1
}
else{
0
}
}
else if(a._1.compare(b._1) < 0 ){
1
}
else {
0
}
}
}
【问题讨论】:
-
你想对列表做什么?
-
您也在比较不相关的类型。字符串和长。这种比较的目的是什么?
-
你如何比较
List[Integer]? -
我也想按升序一一比较列表元素。该列表将始终包含两个元素。
-
是的,我正在比较不相关的数据类型。
标签: scala