排序Seq [scala.collection.immutable.Map [String,org.joda.time.DateTime]]

用户3190018

我在Scala中有Map Seq,它来自蜂巢分区。

我需要从下面的地图序列中获取最新/最近的业务日期

import org.joda.time.DateTime

val a = Seq(
 Map("businessdate" -> DateTime.parse("2018-03-23T00:00:00.000Z")),
 Map("businessdate" -> DateTime.parse("2018-03-24T00:00:00.000Z")),
 Map("businessdate" -> DateTime.parse("2018-03-22T00:00:00.000Z")),
 Map("businessdate" -> DateTime.parse("2018-03-21T00:00:00.000Z"))
)

预期输出为带有最近营业日期的地图。

Map("businessdate" -> DateTime.parse("2018-03-24T00:00:00.000Z")

我尝试使用来排序此序列的地图,sortWith但结果错误

val b = a.map(x => new DateTime( x.get("businessdate").get)
  .isAfter(new DateTime( x.get("businessdate").get)))
println(b)

我是scala的新手。任何帮助表示赞赏。

米克378

使用sortWith以获得最新的业务日期:

val mapWithMostRecentBusinessDate = a.sortWith(
  (a, b) => a("businessdate").isAfter(b("businessdate"))
).head

println(mapWithMostRecentBusinessDate) 

输出Map(businessdate -> 2018-03-24T00:00:00.000Z)

使用O的另一种方法foldLeftSeq因为O(n)可能比对整体排序更有效

val mapWithMostRecentBusinessDate = a.foldLeft(a.head)(
  (acc, b) =>
    if (b("businessdate").isAfter(acc("businessdate")))
      b
    else
      acc
)

println(mapWithMostRecentBusinessDate)

输出Map(businessdate -> 2018-03-24T00:00:00.000Z)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从org.joda.time.DateTime转换为java.time.ZonedDateTime

将java.util.Map [String,Object]转换为scala.collection.immutable.Map [String,Any]

如何从Java中的Java列表创建scala.collection.immutable.Seq?

从Java使用scala.collection.immutable.Set的示例

数据截断:错误的日期时间值:org.joda.time.DateTime

java.lang.NoSuchMethodException:scala.collection.immutable。$ colon $ colon

从scala.collection.immutable.Iterable [String]中删除第一个和最后一个Element

Joda Time / Jackson 2 / Spring的反序列化问题-无法实例化类型的值[简单类型,类org.joda.time.DateTime]

Joda-Time DateTime更改时区?

使用Joda DateTime的Scala日期时间转换

java.lang.NoClassDefFoundError:org.joda.time.DateTime

Apache Spark 2.1:java.lang.UnsupportedOperationException:找不到scala.collection.immutable.Set [String]的编码器

joda-time ISODateTimeFormat.dateTime()行为异常

在scala中,Map [_,_]和scala.collection.immutable.Map [_,_]如何具有不同的TypeTag?

在我的java类中使用scala.collection.immutable.Map

io.circe.Encoder [scala.collection.immutable.Map [Int,Any]]类型的离散隐式展开

java.lang.RuntimeException:不支持的文字类型类org.joda.time.DateTime

Jenkins 2.190.2传递管道视图java.lang.NoClassDefFoundError:org / joda / time / DateTime

MySQL DATETIME精度(joda-time,Hibernate,org.jadira.usertype,hbm2ddl)

Spring bean无法解析org.joda.time.DateTime的构造函数

与Joda Time DateTime#centuryOfEra()的混淆

类型不匹配; 找到:scala.collection.immutable.Stream [String]必需:Play Scala中的字符串?

RDD [scala.collection.immutable.Map [String,Any]的最大值和最小值

尝试使用 gradle-swagger-generator-plugin 生成代码时获取 java.lang.NoSuchMethodError: org.joda.time.DateTime.now()Lorg/joda/time/DateTime

如何使用 Java 使用 scala.collection.immutable.Stream 类

scala.Some 无法转换为 scala.collection.immutable.Map 异常

我想在 Scala 中将 org.apache.spark.rdd.RDD[(Any, scala.collection.immutable.Iterable[String])] 扁平化为 String

如何使用 Scala 在 Spark Streaming 中序列化 org.joda.time.DateTime?

无法将wrappedArray$ofRef 转换为scala.collection.immutable.Seq