给定列表列表,如何获取单个唯一的项目列表

时间:2019-02-15 17:58:43

标签: kotlin

给出以下模型:

class Participant {
   var email = ""
}

class Reservation {
   var participants = ArrayList<Participant>()
}

val reservations = ArrayList<Reservation>()

如何获得reservations中唯一的电子邮件列表,但前提是该电子邮件不为空白?

2 个答案:

答案 0 :(得分:4)

您尝试过吗:

reservations.flatMap { reservation -> reservation.participants }
            .distinctBy { participant -> participant.email }
            .map { participant -> participant.email }
            .filter { email -> email.isNotBlank() } 

答案 1 :(得分:1)

或者这样:

reservations.flatMap { 
    it.participants.map(Participant::email).filter(String::isNotBlank)
}.toSet() // or .distinct()

由于每个元素都应该是唯一的,因此您可能希望使用Set,如果只想使用一个唯一的List,请在末尾使用distinct()