Scala-如何为集合的排序元素分配条目号?

时间:2019-02-18 19:05:55

标签: scala collections

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

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}")
}

1 个答案:

答案 0 :(得分:3)

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

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

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

 sales.sortBy(_.saleDate)