Функция singleOrNull

Функция singleOrNull возвращает единственный элемент коллекции, соответствующий заданному предикату. Если в коллекции нет элементов, удовлетворяющих условию, или их несколько, функция возвращает null. Работает с массивами Array, списками List, множествами Set и другими типами коллекций.

Импорт

kotlinimport kotlin.collections.singleOrNull

Синтаксис

kotlin// Без предиката
fun <T> Iterable<T>.singleOrNull(): T?
fun <T> Array<T>.singleOrNull(): T?

// С предикатом
inline fun <T> Iterable<T>.singleOrNull(
  predicate: (T) -> Boolean
): T?
inline fun <T> Array<T>.singleOrNull(
  predicate: (T) -> Boolean
): T?

Пример

Получим единственный элемент из списка с одним элементом:

kotlinval list = listOf(5)
val res = list.singleOrNull()
println(res)

Результат выполнения кода:

kotlinInt 5

Пример

Попробуем получить единственный элемент из пустого списка:

kotlinval list = emptyList<Int>()
val res = list.singleOrNull()
println(res)

Результат выполнения кода:

kotlinnull

Пример

Попробуем получить единственный элемент из списка с несколькими элементами:

kotlinval list = listOf(1, 2, 3)
val res = list.singleOrNull()
println(res)

Результат выполнения кода:

kotlinnull

Пример

Используем предикат для поиска единственного элемента, большего 3:

kotlinval list = listOf(1, 2, 4, 5)
val res = list.singleOrNull { it > 3 }
println(res)

Результат выполнения кода:

kotlinnull

Пример

Найдем единственный элемент, равный 3:

kotlinval list = listOf(1, 2, 3, 4, 5)
val res = list.singleOrNull { it == 3 }
println(res)

Результат выполнения кода:

kotlinInt 3

Пример

Работа с массивом символов:

kotlinval arr = arrayOf('a', 'b', 'c')
val res = arr.singleOrNull { it == 'b' }
println(res)

Результат выполнения кода:

kotlinChar b

Смотрите также

  • функцию single,
    которая выбрасывает исключение вместо возврата null
  • функцию firstOrNull,
    которая возвращает первый элемент или null
  • функцию lastOrNull,
    которая возвращает последний элемент или null
  • функцию elementAtOrNull,
    которая возвращает элемент по индексу или null