Красивый способ проверить, есть ли в коллекции только один элемент - PullRequest
0 голосов
/ 25 мая 2020

Есть ли способ проверить, есть ли в моей коллекции один-единственный элемент?

if (myCollection.size == 1){

}

что-то вроде

if (myCollection.isSingle()){

}

UPD: Мне понравился isSingle() название из предложенного ответа.

Спасибо

Ответы [ 2 ]

2 голосов
/ 25 мая 2020

Kotlin уже имеет два метода для этого:

fun <T> Iterable<T>.single(): T

Возвращает единственный элемент или выдает исключение, если коллекция пуста или содержит более одного элемента.

fun <T> Iterable<T>.singleOrNull(): T?

Возвращает один элемент или null, если коллекция пуста или содержит более одного элемента.

Используя второй вариант, вы можете заменить if на let функцию

listOf(1).singleOrNull()?.let { print(it) }
1 голос
/ 25 мая 2020

Почему бы не создать? Возможно, это не то, что вы ищете (какой-то обходной путь), но вы можете попробовать go с функциями расширения. Если вы проверите его много раз - это может улучшить читаемость.

fun <T> Collection<T>.isSingle(): Boolean = size == 1

Тогда вы можете назвать это так:

listOf("asd", "qwe").isSingle()  // false
listOf("asd").isSingle()         // true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...