Как вернуть индекс после фильтрации элемента класса данных - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть простой класс данных с одним элементом типа Long. У меня есть массив этих данных. Задача состоит в том, чтобы найти элемент в этом списке с заданным значением и вернуть его индекс, в противном случае -1

Это легко реализовать в императивном стиле:

fun findItem(key: Long): Int {
    for (i in 0 until ORDER - 1) {
        if (itemArray[i]?.value == key) {
            return i
        }
    }
    return -1
}

Мои усилия:

fun findItem(key: Long): Int {
    val filteredIndex = itemArray
        .filter { it?.value == key }
        .map { it.index }
    return ???
    }

"index" красный в "it.index" Не удается определить, какую функцию предполагается использовать.

1 Ответ

1 голос
/ 03 апреля 2020

Вы можете использовать indexOfFirst, который возвращает индекс первого элемента, который удовлетворяет данному предикату. Если элемент не найден, возвращается -1:

itemArray.indexOfFirst { it.value == key }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...