# Server Side Kotlin-12

elementAt() retrieving an element at a specific position. It can be call  with  integer number as an argument, and it will give  the collection element at the given position. 

elementAt() is useful for collections where there is no indexed access, or are statically unknown to provide one.    
```
val games = linkedSetOf("unity", "unreal", "godot", "bevy", "monogame", "supergame" )
println(games.elementAt(3))    
 ```
```
val gamesSortedSet = sortedSetOf("unity", "unreal", "godot", "bevy", "monogame", "supergame")
println(gamesSortedSet.elementAt(0)) // elements are stored in the ascending order      
 ```
output:-    

bevy    

bevy       
 
   During collection element retrieval, exception can be avoided by using another version of elementAt():

elementAtOrNull() returns null when the specified position is out of the collection bounds.

elementAtOrElse() additionally takes a lambda function which maps an Int argument to an instance of the collection element type. When called with an out-of-bounds position, the elementAtOrElse() returns the result of the lambda on the given value.

```
val games = listOf("unity", "unreal", "godot", "bevy", "monogame", "supe rgame" )  
println(games.elementAtOrNull(5))
println(games.elementAtOrElse(5) { index -> "The value for index $index is undefined"})      
```
outut:        

supe rgame     

supe rgame     

    
Functions first() and last() try to  search a collection for elements matching a given predicate.  function first() uses a predicate which  tests a collection element, and gives the first element on which the predicate yields true. Reciprocally  , last() using  predicate returns the last match element.
```
val games = listOf("unity", "unreal", "godot", "bevy", "monogame", "supergame" ) 
println(games.first { it.length > 4 })
println(games.last { it.startsWith("u") })       
```
output:   

unity     

unreal         

If no elements match the predicate, both above functions throw exceptions. To avoid them, use firstOrNull() and lastOrNull() instead: they return null if no matching elements are found.   
```
val games = listOf("unity", "unreal", "godot", "bevy", "monogame", "supergame" ) 
println(games.firstOrNull { it.length > 9 })  
or   use find(), which is an alias.
println(games.find { it.length > 9 })   
 ```
 to retrieve an arbitrary element of a collection, use the random() function. random() can be  call without arguments   
```.
val games = listOf("unity", "unreal", "godot", "bevy", "monogame", "supergame" ) 
println(games.random())  
```   
output:      

bevy      

output:      

null  

