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


相关推荐

  • JVM进阶(十一):JAVA G1收集器

    JVM进阶(十一):JAVA G1收集器JVM进阶(十一)——JAVAG1收集器  在前两篇博文中讲解了新生代和年老代的收集器,在本篇博文中介绍一个收集范围涵盖整个堆的收集器——G1收集器。先讲讲G1收集器的特点,他也是个多线程的收集器,能够充分利用多个CPU进行工作,收集方式也与CMS收集器类似,因此不会有太久的停顿。  虽然回收的范围是整个堆,但还是有分代回收的回收方式。在年轻代依然采用复制算法;年老代也同样采用“标记-清除

    2022年6月13日
    26
  • 30 个重要数据结构和算法完整介绍建议保存

    30 个重要数据结构和算法完整介绍建议保存数据结构和算法(DSA)通常被认为是一个令人生畏的话题——一种常见的误解。它们是技术领域最具创新性概念的基础,对于工作/实习申请者和有经验的程序员的职业发展都至关重要。话虽如此,我决定在CSDN新星计划挑战期间将我所了解的数据结构和算法集中起来。本文旨在使DSA看起来不像人们认为的那样令人生畏。它包括15个最有用的数据结构和15个最重要的算法,可以帮助您在学习中和面试中取得好成绩并提高您的编程竞争力。后面等我还会继续对这些数据结构和算法进行进一步详细地研究讲解。

    2022年5月23日
    32
  • Java安全之Weblogic 2016-3510 分析

    Java安全之Weblogic2016-3510分析首发安全客:Java安全之Weblogic2016-3510分析0x00前言续前面两篇文章的T3漏洞分析文章,继续来分析CVE-20

    2021年12月12日
    46
  • chorme 显示“请在微信客户端打开链接”

    chorme 显示“请在微信客户端打开链接”chorme显示“请在微信客户端打开链接”

    2022年5月29日
    43
  • 菜鸟教程java的list_Java菜鸟教程

    菜鸟教程java的list_Java菜鸟教程分阶段进阶教学+阶段考评让学习无死角因为考虑学员基础水平参差不齐,所以动力节点的课程安排对学员进行科学细致的划分,整个教学安排共分两大部分即:基础部分和就业部分,基础部分课程由教学总监定制最适合零基础入门的课程大纲;就业部分课程由教研部实地探访名企如百度、京东、新浪等企业,将最前沿的技术引入到课堂,同时又根据就业课程的深度不同划分为7个阶段,每个阶段都有不同的技术侧重点,层层深入。纵观来看,动力…

    2022年6月13日
    30
  • INTERLLij IDEA 修改背景颜色护眼[通俗易懂]

    INTERLLij IDEA 修改背景颜色护眼[通俗易懂]IDEA的默认颜色为黑色,确实很酷,第一眼就被它的界面所惊艳到了!不过软件的默认字体太小,对于我这个有着500多度近视的人来说简直痛苦,特地整理了一些修改背景颜色的方法,供大家参考。1.IntelliJIDEA设置菜单栏字体:File—Setting—Appearance&amp;Behavior—Appearance—Overridedefaul…

    2022年6月20日
    69

发表回复

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

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