Есть два способа решения этой проблемы. Если вы хотите сохранить записи с null
date, тогда вы должны передать закрытие, которое представляет компаратор, что-то вроде этого:
otherParents.sort { a,b -> b.parent.lastUpdatedDate?.time <=> a.parent.lastUpdatedDate?.time }.each {
println it
}
Он будет сортировать записи в порядке убывания, а записи с null
последней обновленной датой будут сохранены в конце списка.
В качестве альтернативы, если вы хотите удалить записи с null
последней обновленной датой, тогда вы можете отфильтровать список ввода и использовать ту же операцию сортировки, которую вы использовали ранее:
otherParents.findAll { it.parent.lastUpdatedDate != null }.sort { -it.parent.lastUpdatedDate.time }.each {
println it
}
Единственное отличие состоит в том, что второй пример будет сортировать только список записей, которые имеют ненулевую дату последнего обновления.
И ниже вы можете найти пример с выводом, который он производит:
import java.text.SimpleDateFormat
def date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss")
def otherParents = [
[parent: [lastUpdatedDate: date.parse("2018-10-26T10:00:00")]],
[parent: [lastUpdatedDate: date.parse("2018-10-26T10:00:01")]],
[parent: [lastUpdatedDate: null]],
[parent: [lastUpdatedDate: date.parse("2018-10-26T10:00:02")]],
[parent: [lastUpdatedDate: date.parse("2018-10-26T10:00:03")]],
[parent: [lastUpdatedDate: null]],
[parent: [lastUpdatedDate: null]]
]
otherParents.sort { a,b -> b.parent.lastUpdatedDate?.time <=> a.parent.lastUpdatedDate?.time }.each {
println it
}
println "----"
otherParents.findAll { it.parent.lastUpdatedDate != null }.sort { -it.parent.lastUpdatedDate.time }.each {
println it
}
Выход:
[parent:[lastUpdatedDate:Fri Oct 26 10:00:03 CEST 2018]]
[parent:[lastUpdatedDate:Fri Oct 26 10:00:02 CEST 2018]]
[parent:[lastUpdatedDate:Fri Oct 26 10:00:01 CEST 2018]]
[parent:[lastUpdatedDate:Fri Oct 26 10:00:00 CEST 2018]]
[parent:[lastUpdatedDate:null]]
[parent:[lastUpdatedDate:null]]
[parent:[lastUpdatedDate:null]]
----
[parent:[lastUpdatedDate:Fri Oct 26 10:00:03 CEST 2018]]
[parent:[lastUpdatedDate:Fri Oct 26 10:00:02 CEST 2018]]
[parent:[lastUpdatedDate:Fri Oct 26 10:00:01 CEST 2018]]
[parent:[lastUpdatedDate:Fri Oct 26 10:00:00 CEST 2018]]