加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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,按以下顺序对元组进行排序:

>布尔 – 逆序
> Int – 逆序
>字符串 – 常规订单

例:
对于元组:Array((false,8,“zz”),(false,3,“bb”),(true,5,“cc”),“dd”))

订购应该是:

(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) }

对于无法轻易“反转”某个值的情况(假设这是一个参考对象,并且您对它们进行了不透明的排序),您可以改为使用
排序并显式传递构造的顺序,以反转第一个和第二个元素上的顺序(您可以使用Ordering.reverse来反转排序):

val myOrdering: Ordering[(Boolean,String)] = Ordering.Tuple3(Ordering.Boolean.reverse,Ordering.Int.reverse,Ordering.String)
a.sorted(myOrdering)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读