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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 常用数字音频功放芯片-音频放大器

    常用数字音频功放芯片-音频放大器功放作为各类音响器材设备中的重要组成部分,作用就是把来自音源或前级放大器的弱信号放大,推动音箱放声,一套良好的音响系统功放的作用功不可没。功放的主要性能指标有输出功率,频率响应,失真度,信噪比,输出阻抗,阻尼系数等。由于考虑功率、阻抗、失真、动态以及不同的使用范围和控制调节功能,不同的功放在内部的信号处理、线路设计和生产工艺上也各不相同,由于各厂家的测量方法不一样,所以出现了一些名目不同的叫法。例如额定输出功率,最大输出功率,音乐输出功率,峰值音乐输出功率。数字音频处理功放芯片在影响声卡的功能和性能

    2022年5月22日
    40
  • clion 2021.3激活码破解方法

    clion 2021.3激活码破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    284
  • Linux下的tar压缩解压缩命令使用

    Linux下的tar压缩解压缩命令使用tar参数:-c:建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。-z:有gzip属性的,通过gzip过滤归档-j:有bz2属性的,通过bzip2过滤归档-v:显示所有过程-Z:有compress属…

    2022年5月25日
    35
  • IDEA 2018 2020 2021 2022 各版本对Maven版本兼容问题汇总「建议收藏」

    IDEA 2018 2020 2021 2022 各版本对Maven版本兼容问题汇总「建议收藏」IDEA2022兼容maven3.8.1及之前的所用版本IDEA2021兼容maven3.8IDEA2018202020212022各版本对Maven版本兼容问题汇总Maven3.6.3版本兼容问题错误信息如下:1.IDEA2021兼容maven3.8.1及之前的所用版本2.IDEA2020兼容Maven3.6.3及之前所有版本3.IDEA2018兼容Maven3.6.1及之前所有版本IDEA2022兼容maven3.8.1及之前的所用版本

    2022年8月22日
    77
  • crm使用FetchXml聚合查询

    crm使用FetchXml聚合查询

    2022年1月24日
    45
  • 行列式及其运算和性质[通俗易懂]

    行列式及其运算和性质[通俗易懂]行列式特别注意,行列式虽然表达为一系列数字的数表,但是其本质式一个数,这个跟矩阵有本质的区别.二阶行列式D=∣a11a12a21a22∣=a11a22−a12a21D=\begin{vmatrix}a_{11}&a_{12}\\a_{21}&a_{22}\end{vmatrix}=a_{11}a_{22}-a_{12}a_{21}D=∣∣∣∣​a11​a21​​a12​a22​​∣∣∣∣​=a11​a22​−a12​a21​三阶行列式D=∣a11a12a13a21a2

    2025年5月26日
    2

发表回复

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

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