我有两个HttpContext.Current.Session["MyCustomID"] = null;
个对象:
ListBuffer
两者的长度相同。我想按照val o1 = new ListBuffer[String]
val o2 = new ListBuffer[Double]
值按降序排序o1
。这就是我试图解决的问题:
o2
首先,我不知道如何根据// order `o2`
val ordered = o2.sorted(Ordering[Double].reverse)
// get indices
val ind = ordered.indices
// reorganize `o1` according to `ind`
有效地重新组织o1
。其次我想知道是否存在更好的方法(可能使用map,flatMap ......)。
也许保持单个数据结构而不是有两个ListBuffer是有意义的。?
答案 0 :(得分:4)
如果你想知道事情是如何移动的,你需要跟踪指标:
val o3 = o2.zipWithIndex.sortBy(_._1)
然后您可以按顺序获取o1
的元素:
o3.map(e=>o1(e._2)) //> res0: ListBuffer(a, c, b)
但是如果你要这样做,你可以跳过一步,在排序之前加入o1
的元素:
(o2 zip o1).sortBy(_._1).map(_._2) //> res1: ListBuffer(a, c, b)
但是如果o1
和o2
的元素始终处于锁定状态,那么是的,维护单个数据结构对我来说是有意义的
答案 1 :(得分:2)
像这样的事情:
(o1 zip o2 sortBy(-_._2) unzip)._1