Запрос данных от объекта 2, который имеет идентификатор объекта 1 в качестве атрибута - PullRequest
0 голосов
/ 01 мая 2019

У меня есть 2 класса данных, Персона и Собака. Человек имеет следующие атрибуты:

personId, имя, возраст, isFemale

data class Person (
  val personId: Int,
  val name: String,
  val age: Int,
  val isFemale: Boolean
)

Собака имеет следующие атрибуты:

dogId, personId, имя, возраст, isFemale

data class Dog (
  val dogId: Int,
  val personId: Int,
  val name: String,
  val age: Int,
  val isFemale: Boolean
)

Я хочу запросить всех собак человека, используя атрибут id. Но я получаю сообщение об ошибке, что собаки не инициализированы и пустые.

fun getTestPersons(): Array<Person>{
  return arrayOf(): Array<Person>(
   Person(1, "Harry", 35, false)
)
}

fun getTestDogs(): Array<Dog>{
  return arrayOf(
   Dog(1, 1, "Bert", 4, false), Dog(2, 1, "Linda", 6, true)
)
}

currentPerson был инициализирован, например, первым.

lateinit var dogs: MutableList<Dog>
for(dog in getTestDogs()){
if(dog.personId == currentPerson.personId){
  dogs.add(dog)
 }
}

Ожидаемый: MutableList со всеми собаками определенного человека.

1 Ответ

1 голос
/ 01 мая 2019

Функция Collection.filter идеально подходит для этого

getTestDogs()
  .filter { dog -> dog.personId == currentPerson.personId }
  .toMutableList()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...