Как мне отфильтровать набор в другой набор в Kotlin - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь справиться с Kotlin и функциональным программированием и проваливаю довольно простое упражнение.

Я немного изменю это, чтобы не было слишком очевидно, что это из определенного онлайн-курса, но я просто пытаюсь начать действительно и не пытаюсь кого-то обмануть ...

Я работаю с 2 коллекциями

data class Pet(val name: String)

data class Household (
   val pet: Pet,
   ... 
)

data class District(
   val allPets: Set<Pet>,
   val allHouseholds: List<Household>,
   ...)

Я хочу найти всех домашних животных не в домашнем хозяйстве. Он должен быть возвращен в виде набора как я получил эту подпись, чтобы играть с

fun Locality.findFeralPets(): Set<Pet> =

Я собирался выполнить операцию фильтрации, но это возвращает список, и я не вижу, как преобразовать это в набор. Может кто-то указать мне верное направление ? Вполне возможно, что фильтр - это неправильный подход вообще!

allPets.filter { pet -> pet.name != "Bob" }

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Более эффективно делать это по-другому, избегая отдельного преобразования:

allPets.filterTo(HashSet()) { pet -> pet.name != "Bob" }
0 голосов
/ 06 ноября 2018

filter возвращает Iterable, в котором есть метод расширения, называемый toSet, который возвращает Set. например,

allPets.filter { pet -> pet.name != "Bob" }.toSet()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...