The single() extension function in Kotlin returns the single element in the collection, or throws an exception if the collection is empty or has more than one element. It can also return the single element matching the given predicate, or throw an exception if there is no matching element or more than one matching element.
There are 2 variations for the syntax of Set.single() extension function. They are:
fun <T> Set<T>.single(): T
This extension function returns the single element, or throws an exception if the collection is empty or has more than one element.
Returns value of type T
.
fun <T> Set<T>.single(predicate: (T) -> Boolean): T
Parameters
Parameter | Optional/Required | Description |
---|---|---|
predicate | optional | A function that takes an element and returns a Boolean indicating whether the element matches the predicate. |
This extension function returns the single element matching the given predicate, or throws exception if there is no or more than one matching element.
Returns value of type T
.
Using single() to get the single element in a set of integers, or throwing an exception if the set does not contain exactly one element.
For example,
fun main() {
val numbers = setOf(42)
val singleNumber = numbers.single()
println(singleNumber)
}
42
Using single() to get the single element matching a predicate in a set of strings, or throwing an exception if there is no matching element or more than one matching element.
For example,
fun main() {
val strings = setOf("one", "two", "three")
val singleString = strings.single { it.length == 3 }
println(singleString)
}
two
Using single() to demonstrate the exception thrown when the set has more than one element.
For example,
fun main() {
val numbers = setOf(1, 2, 3)
try {
val singleNumber = numbers.single()
println(singleNumber)
} catch (e: IllegalArgumentException) {
println("Exception: ${e.message}")
}
}
Exception: Collection contains more than one element.
Using single() to demonstrate the exception thrown when no element matches the predicate.
For example,
fun main() {
val strings = setOf("one", "two", "three")
try {
val singleString = strings.single { it.length == 5 }
println(singleString)
} catch (e: IllegalArgumentException) {
println("Exception: ${e.message}")
}
}
Exception: Collection contains no element matching the predicate.
In this Kotlin tutorial, we learned about single() extension function of Set: the syntax and few working examples with output and detailed explanation for each example.