zain
06/17/2022, 7:54 AMval employees =
listOf<Employee>(
Employee(
id = 1,
listOf(
Address(id = 1, isPerm = false),
Address(id = 2, isPerm = true),
Address(id = 3, isPerm = true)
)
),
Employee(
id = 2,
listOf(
Address(id = 1, isPerm = false),
Address(id = 2, isPerm = false),
Address(id = 3, isPerm = true)
)
)
)
Michael de Kaste
06/17/2022, 8:26 AMid = 1
return for you since he has two?zain
06/17/2022, 8:29 AMzain
06/17/2022, 8:29 AMKlitos Kyriacou
06/17/2022, 8:44 AMval result = employees
.filter { (_, addresses) -> addresses.any { it.isPerm } }
.map { (id, addresses) -> id to addresses.first { it.isPerm } }
(This assumes the addresses in the list are already sorted by id. It returns a Pair of employee id to address, but you can instead create a new data class containing an Employee with a single address.)zain
06/17/2022, 8:45 AMMichael de Kaste
06/17/2022, 9:04 AMemployees.mapNotNull { employee ->
employee.addresses
.firstOrNull(Address::isPerm)
?.let { employee to it }
}
per employee, grab the first Address with isPerm=true, if it exists, map it to a pair of employee to addressYoussef Shoaib [MOD]
06/17/2022, 10:15 AMemployees.filter { it.addresses.any(Address::isPerm) }