Scala – 通过第一个元素反向排序元组,第二个元素常规
发布时间:2020-12-16 08:52:12 所属栏目:安全 来源:网络整理
导读:我有形式的元组(Boolean,Int,String). 我想定义Ordering,按以下顺序对元组进行排序: 布尔 – 逆序 Int – 逆序 字符串 – 常规订单 例: 对于元组:Array((false,8,“zz”),(false,3,“bb”),(true,5,“cc”),“dd”)) 订购应该是: (true,"cc")(false,"zz"
我有形式的元组(Boolean,Int,String).
我想定义Ordering,按以下顺序对元组进行排序: >布尔 – 逆序 例: 订购应该是: (true,"cc") (false,"zz") (false,"bb") (false,"dd") 谁能帮忙.我找不到一种方法来定义一些反向排序和一些常规. 非常感谢. 解决方法
在这种特定情况下,直接的解决方案是在元组上使用sortBy,在运行中进行修改以“反转”第一个和第二个元素,以便最终排序顺序:
val a = Array((false,"zz"),"bb"),"cc"),"dd")) a.sortBy{ case (x,y,z) => (!x,-y,z) } 对于无法轻易“反转”某个值的情况(假设这是一个参考对象,并且您对它们进行了不透明的排序),您可以改为使用 val myOrdering: Ordering[(Boolean,String)] = Ordering.Tuple3(Ordering.Boolean.reverse,Ordering.Int.reverse,Ordering.String) a.sorted(myOrdering) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |