【问题标题】:Scala - how to assign entry numbers to sorted elements of a collection?Scala - 如何将条目编号分配给集合的排序元素?
【发布时间】:2019-07-12 05:20:39
【问题描述】:

我想编写一种方法来处理销售数据,使销售按日期排序并与条目编号和销售类型连接,如下所示:

0/2018-05-02 01:55:07/Sale type A,1/2018-09-22 02:55:07/Sale type B

但现在我只能实现连接 saleDate 和 saleType。如何为每条记录生成一个条目号?条目号是指按日期排序后的销售顺序

def concatSales(sales: Seq[Sale]): Seq[String] = {
        sales
        .sortWith(_.saleDate < _.saleDate)
        .map(sale => s"$DELIMITER${sale.saleDate}$DELIMITER${sale.saleType}")
}

【问题讨论】:

  • 条目号是什么意思?
  • Sale 类是否有 entryNumber 字段左右?
  • @ChaitanyaWaikar by entry number 我的意思是按日期排序后的销售顺序

标签: scala collections


【解决方案1】:

如果要为每个元素分配索引,可以使用zipWithIndex

sales
  .sortWith(_.saleDate < _.saleDate)
  .zipWithIndex
  .map {
    case (sale, idx) => s"$idx: ..."
  }

请注意,您可能希望使用.sortBy 而不是.sortWith,因为它看起来更简单:

 sales.sortBy(_.saleDate)

【讨论】:

    猜你喜欢
    • 2022-11-03
    • 2019-02-06
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多