как использовать отличный оператор - PullRequest
0 голосов
/ 28 сентября 2018

пожалуйста, дайте мне знать причину, по которой я получаю вывод, упомянутый ниже ??Я ожидал получить следующее:

[Person(_name=xyz4, _age=30),   
Person(_name=xyz5, _age=50)]

из-за отличного оператора

Main :

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())
}

output :

[Person(_name=xyz3, _age=30), Person(_name=xyz4, _age=30), 
Person(_name=xyz5, _age=50)]

1 Ответ

0 голосов
/ 28 сентября 2018

вы можете использовать

.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())
}
...