scala List immutable.Map[String,Any]]的排序问题

scala List immutable.Map[String,Any]]的排序问题

帮同事处理List[scala.collection.immutable.Map[String,Any]]的排序问题

原来想的办法是

var x = mylist.sortWith(_.get("commonCount").toString > _.get("commonCount").toString)

_.get("commonCount")可以取出值,但类型是 Some,要用_.get("commonCount").get 来获取真实类型

scala> println(mylist.map(_.get("commonCount").get.getClass))
List(class java.lang.Integer, class java.lang.Integer, class java.lang.Integer, class java.lang.Integer, class java.lang.Integer)

知道真实的数据类型,但在实际使用时要转换成基本类型.asInstanceOf[Int],进行判断

mylist.sortWith((x, y) => x.get("commonCount").get.asInstanceOf[Int] < y.get("commonCount").get.asInstanceOf[Int]))

另一种方法:

mylist.sortWith(_.get("commonCount").get.asInstanceOf[Int] < _.get("commonCount").get.asInstanceOf[Int])

源码:

import scala.collection.immutable.{HashMap, List}

/**
  * Created by 185378641@qq.com on 2017/12/7. 
  *
  * @author jiangtao
  *
  * 		[
  * 		{
  * 		"treatmentMoney": 0,
  * 		"hospital": "湖南中医学院第二附属医院湖南省中医院",
  * 		"commonCount": 2,
  * 		"department": "主治医师",
  * 		"departmentFunction": "a19ec1789ab711e7a9ff408d5c916e3f",
  * 		"docId": "3291ba79901e42bfb756745fb803df64",
  * 		"joinedClinic": [
  * 		"马冬梅--陈小春"
  * 		],
  * 		"docName": "马冬梅--陈小春--张三"
  * 		},
  * 		{
  * 		"treatmentMoney": 0,
  * 		"hospital": "湖南中医学院第二附属医院湖南省中医院",
  * 		"commonCount": 1,
  * 		"department": "主治医师",
  * 		"departmentFunction": "a19ec1789ab711e7a9ff408d5c916e3f",
  * 		"docId": "1ec9303c79df48d9988bd7bce4370c0e",
  * 		"joinedClinic": [
  * 		"马冬梅--陈小春--张三",
  * 		"小二"
  * 		],
  * 		"docName": "麻子"
  * 		}
  * 		]
  */

object Main extends App {
  println("hello world")
  //
  //  val days = List(
  //    "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
  //  )

  var one = Map(
	"docName" -> "马冬梅",
	"commonCount" -> 11
  )
  var two = Map(
	"docName" -> "麻子",
	"commonCount" -> 23
  )
  var three = Map(
	"docName" -> "麻子",
	"commonCount" -> 3
  )
  var four = Map(
	"docName" -> "麻子",
	"commonCount" -> 19
  )
  var five = Map(
	"docName" -> "麻子",
	"commonCount" -> 5
  )

  var mylist = List(one, two, three, four, five)

  println(mylist.sortWith((x, y) => x.get("commonCount").get.asInstanceOf[Int] > y.get("commonCount").get.asInstanceOf[Int]))
  println(mylist.sortWith((x, y) => x.get("commonCount").get.asInstanceOf[Int] < y.get("commonCount").get.asInstanceOf[Int]))

  //  println(mylist.sortWith((x,y) => x.get("commonCount"))
  //  mylist.toList.foreach(i => println(i.get("commonCount").getClass))
//
//  var x = Map(
//    "a" -> 1,
//    "b" -> "b"
//  )
//  var y = Map(
//    "a" -> 11,
//    "b" -> "b"
//  )
//  var z = Map(
//    "a" -> 3,
//    "b" -> "b"
//  )

//  println(x.get("a").get.getClass)
//  println(y.get("a").get.getClass)
//  println(z)
//
//  var xyz = List(x, y, z)

  //  println(xyz.sortBy(_.get("a").get))


  /*
	* test
	*/

  //  print(mylist.sorted)
  //      print(mylist.flatMap(i => i.get("commonCount")).sortBy(_))
  //      print(mylist.map(i => i.get("commonCount")).sortWith((x,y) => x > y ))
  //    print(mylist.map(i => i.get("commonCount")).sortWith(_.toString > _.toString))
  //    print(mylist.sortBy(i =>(i.get("commonCount"))))
  //    print(mylist.sortBy(_.get("commonCount")))
  //      print(mylist.map(_.foreach(println)))
  //    print(mylist.map(_.get("commonCount")).foreach(println))
  //  print(mylist.sortWith(_.get("commonCount").toString > _.get("commonCount").toString))
  //  println(mylist.sortWith(_.get("commonCount").toString < _.get("commonCount").toString))
  //  println(mylist.sortBy(_.get("commonCount").toString))
  //    println(mylist.sortBy(_.values))
  //  println(mylist.sorted(Ordering.Int.reverse))
  //  println(mylist.sortBy(_.get("commonCount")))
  //  println(mylist.groupBy(_.get("commonCount")))
  //  println(mylist.sortWith(_.foreach(println(_._2))))
  //  println(mylist.map(_.mapValues()))
  //  println(mylist.sortBy(i => i.get("commonCount").toString ))
  //  println(mylist.sortBy(i => (x = i.get("commonCount"),y=i.get("commonCount") )=>
  //  println(mylist.sortWith((x,y)=>x.get("commonCount").toString > y.get("commonCount").toString))
  //    println(mylist.sortWith((x, y) => x.get("commonCount").toString.compareTo(y.get("commonCount").toString)<0))
  //  println(mylist.sortWith((x, y) => x.get("commonCount").toString.compare(y.get("commonCount").toString) < 0))
  //  println(mylist.sortWith(_.get("commonCount") < _.get("commonCount")))

  //  println(mylist.sortBy(_.get("commonCount").foreach(println)))
  //  println(mylist.sortWith(_.get("commonCount").toString >  _.get("commonCount").toString))
  //  println(mylist.sortWith((x, y) => x.get("commonCount").toString < y.get("commonCount").toString))
  //  println(mylist.sorted((x, y) => x.get("commonCount").toString.compareTo(y.get("commonCount").toString)))
  //    println(mylist.sortBy(i => (i.get("commonCount").toString.charAt(0),i.get("commonCount").toString.charAt(1))))
  //    print(mylist.sortBy(_.get("commonCount")))
  //  print(mylist.map(_.get("commonCount") < _.get("commonCount")): _*))
  //  print(mylist.sortBy(i => i.get("commonCount")))
  //  print(mylist.map(_.get("commonCount")).sortBy{_}:_*)
  //  print(mylist.sortWith(_.get("commonCount") > ).toSeq)
  //  var v = mylist.groupBy(_.get("commonCount"))
  //  println(v.keys.toList.foreach(println(_)))


  //    println(v.take(1).foreach(println))


  //  val newMap = mylist.sortBy().foldLeft(new ListMap[String, String]) {
  //    (map, key) => map + (key._1 -> key._2)

  // is ok
  //  var a = Item("马冬梅", 2, "主任")
  //  var b = Item("麻子", 9, "主任")
  //  var c = Item("麻子", 11, "主任")
  //  var d = Item("麻子", 5, "主任")
  //
  //  var mylist = List(a, b, c, d)
  //  println(mylist.sortWith((x,y) => x.commonCount.compare(y.commonCount)>0))
  //  println(mylist.sortBy(i => i.commonCount))


  //  var mymap = List(a,b,c,d).sortBy()
  //  print(mymap)
  //    var mylist =Map(one.get("commonCount")->one,two.get("commonCount")->two,three.get("commonCount")->three).toList.sortBy{_._2}:_*
  //  var mylist = listMap(Map(one->one.get("commonCount"),two.toString()->two.get("commonCount"),three.toString()->three.get("commonCount")).toList.sortBy{_._2}:_*)
  //  var listMap = ListMap(Map("foo"->3, "raise"->1, "the"->2, "bar"->4,"bar1"->4).toList.sortBy{_._2}:_*)


}


case class Item(docName: String, commonCount: Int, departmentName: String)


//
//class Doctor {
//
//  object docId
//
//  object getRealName
//
//  object getDepartmentName
//
//  object getDepartmentFunctionId
//
//  object getHospitalName
//
  var getTreatmentMoney
//
//  var commonCount:String
//
//  override def toString = commonCount
//
//}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100410.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MATLABfill函数_matlab中C的模块名称是什么

    MATLABfill函数_matlab中C的模块名称是什么matlab移植C/C++代码时,发现不管是opencv还是IPP库都没有填充联通区域函数imfill(),于是只能自己动手了。先展示一下imfill()函数的功能,如下图:上图中,左图是一个二值图像,白色是手臂边缘像素值为1,黑色区域像素值为0,现在想将手臂填充1,用imfill()函数可以实现该功能,但C/C++代码需要自己实现。C/C++代码:boolimFill(Ipp8u*img,intwidth,intheight){ vector<int>q; int

    2025年11月4日
    4
  • GoogleEarth出新版-4.2版【含天际地图和中文版】「建议收藏」

    GoogleEarth出新版-4.2版【含天际地图和中文版】「建议收藏」GoogleEarth终于发布4.2版了,强烈建议大家去下载这个版本,因为这个版本不仅有繁体中文的支持,而且还包含了一个有趣的东西:GoogleSky(天际地图)。

    2022年7月3日
    34
  • python获取当前时间的时间戳_python精确到毫秒时间戳

    python获取当前时间的时间戳_python精确到毫秒时间戳在Python中可以使用来自模块time、datetime或calendar的函数来获取当前时间戳,代码语句如【importtime;ts=time.time()print(ts)】。在Python中,有多种方法可以获得当前时间戳。如果希望在Python中获得时间戳,可以使用来自模块time、datetime或calendar的函数。使用模块time模块time是提供各种与时间相关的功能。…

    2022年10月2日
    4
  • futex函数_UNIX/LINUX

    futex函数_UNIX/LINUX引子在编译2.6内核的时候,你会在编译选项中看到[*]Enablefutexsupport这一项,上网查,有的资料会告诉你”不选这个内核不一定能正确的运行使用glibc的程序”,那futex是什么?和glibc又有什么关系呢?1.什么是FutexFutex是FastUserspacemuTexes的缩写,由HubertusFranke,MatthewKirkwo

    2022年9月21日
    3
  • lua sort排序_python中列表排序的用法

    lua sort排序_python中列表排序的用法”’lua中对table的排序一般是用lua自带的table.sort()函数排序,一般不采用自己写的排序的方式,以下来说一说table.sort()排序和在工作中遇到的问题1.排序的方式table.sort(tbl,function(a,b)returna>bend)以上是一个简单的例子,得到的效果是对于待排序的数据的一个升序,你这样认为就是错了,例如a

    2022年8月12日
    5
  • 滑动平均值滤波_m点滑动平均滤波器

    滑动平均值滤波_m点滑动平均滤波器   关于数据采集的滑动平均值滤波的算法      —王超杰    以ADC为例,采集口的模拟量可能夹杂着不同频段,不同峰值的干扰信号,这些干扰信号和要采集的模拟量互相干扰,那么ADC采集的数据量就会偏移原有的真实结果。那么通过硬件与数字滤波两种手段可大大减少采集误差,提高精度。    一般滤波均通过程序算法滤除,其包括去极值滤波、算术平均值滤波、滑动平均值滤波、加…

    2025年7月6日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号