请让我知道为什么我得到下面提到的输出的原因吗? 我期望得到以下结果:
[Person(_name=xyz4, _age=30),
Person(_name=xyz5, _age=50)]
因为操作符不同
主要:
fun main(args: Array<String>) {
val person1 = Person("xyz1", 10);
val person2 = Person("xyz2", 20);
val person3 = Person("xyz3", 30);
val person4 = Person("xyz4", 30);
val person5 = Person("xyz5", 50);
var persons = listOf(
person1, person2, person3, person4 , person5)
.asSequence()
.filter { x-> x.age >=30 }
.distinct()
println(persons.toList())
}
输出:
[Person(_name=xyz3, _age=30), Person(_name=xyz4, _age=30),
Person(_name=xyz5, _age=50)]
答案 0 :(得分:1)
您可以使用
.distinctBy { it.age }
代替
.distinct()
如果元素的顺序很重要,则可以像这样添加sortedBy
fun main(args: Array<String>) {
val person1 = Person("xyz1", 10)
val person2 = Person("xyz2", 20)
val person3 = Person("xyz3", 30)
val person4 = Person("xyz4", 30)
val person5 = Person("xyz5", 50)
val persons = listOf(
person1, person2, person3, person4, person5)
.reversed()
.filter { x -> x.age >= 30 }
.distinctBy { it.age }
.sortedBy { it.age }
println(persons.toList())
}