Найти, если элемент со значением свойства c указан в списке - PullRequest
2 голосов
/ 27 февраля 2020

Я пытаюсь найти значение в списке объектов в kotlin, используя для него «фильтр», но мне нужно вернуть true или false, если значение найдено, но фильтр возвращает мне список объектов в случае совпадения.

t.filter { it.retailerId == value }

¿Как я могу вернуть логическое значение, когда нахожу это значение в списке объектов?

Ответы [ 3 ]

2 голосов
/ 27 февраля 2020

Если вам нужно, чтобы элемент был ровно один:

t.filter { it.retailerId == value }.size == 1

, если нет:

t.any { it.retailerId == value }

С foldRight и разрывом, когда вы его нашли:

t.foldRight(false) {val, res ->
                if(it.retailerId == value) {
                    return@foldRight true
                } else {
                    res
                }
            }
2 голосов
/ 27 февраля 2020

В качестве альтернативы firstOrNull вы также можете использовать any с тем же предикатом:

val found = t.any { it.retailerId == value }
2 голосов
/ 27 февраля 2020

Вы можете использовать firstOrNull() с указанным предикатом c:

val found = t.firstOrNull { it.retailerId == value } != null

Если firstOrNull() не возвращает null, это означает, что значение найдено.

...