Учитывая:
data class ClassA(val list: List<ClassB>)
data class ClassB(val field3: Int, val dateField: String? = null)
Вы можете получить самую последнюю дату, используя mapNotNull, где вы отформатируете свою дату и вернете ноль, если получите исключение.
Тогда maxBy в поле, содержащемформатированная дата в вашем новом объекте, созданном в предыдущем mapNotNull
Я решил использовать пару, поскольку похоже, что вы хотите только фильтр и не хотите сохранять вновь созданный объект.Но если это не так, подумайте о создании нового класса, содержащего всю необходимую информацию.
val a = ClassA(
listOf(
ClassB(0, "24"),
ClassB(1, "24/03/1987"),
ClassB(2),
ClassB(3, "24/03/2024")
)
)
val res = a.list
.mapNotNull {
val dateFormater = DateTimeFormatter.ofPattern("dd/MM/yyyy")
try {
Pair(it.field3, LocalDate.parse(it.dateField, dateFormater))
} catch (e: Exception) {
null
}
}
.maxBy { it.second }