Допустим, класс вашего дела выглядел следующим образом.
// Note that in scala its preferred to use Option to indicate nullable fields
case class AccountManagement(accountStatus: String,
accountManagementId: Long,
submittedDate: Option[String])
val accounts = List(
AccountManagement("submitted", 1L, Some("21/12/2017")),
AccountManagement("submitted", 2L, Some("19/12/2017")),
AccountManagement("submitted", 3L, None),
AccountManagement("submitted", 4L, Some("20/12/2017"))
)
val dtf = DateTimeFormatter.ofPattern("dd/MM/yyyy")
Вы можете определить неявный порядок, который хотите использовать в этом контексте
implicit val localDateOrdering: Ordering[LocalDate] = Ordering.by(_.toEpochDay)
accounts.filterNot(_.submittedDate.isEmpty) sortBy {
case AccountManagement(_, _, Some(submittedDateString)) => LocalDate.parse(submittedDateString, dtf)
}
или вы можете напрямую указать, что вы хотите использовать миллисекундное представление указанной даты для сортировки набора данных
accounts.filterNot(_.submittedDate.isEmpty) sortBy {
case AccountManagement(_, _, Some(submittedDateString)) => LocalDate.parse(submittedDateString, dtf).toEpochDay
}