¿Proporciona Kotlin alguna implementación de sus interfaces de colección?

Veo que Kotlin proporciona una serie de interfaces para implementar collections. Se enumeran en esta página .

No veo implementaciones de estos proporcionados por Kotlin.

Sin embargo, veo que hay funciones en el espacio de nombres global que nos ayudan a crear instancias de estas collections. Por ejemplo, para crear una list mutable de numbers, podemos decir:

var numbers : MutableList<Int> = mutableListOf(1, 2, 3); 

Para crear una vista de solo lectura de la list, podemos decir:

 val readOnlyViewOfNumbers : List<Int> = numbers; 

O bien, para crear una list de numbers de solo lectura, podemos decir:

 val readOnlyListOfNumbers : List<Int> = listOf(1, 2, 3); 

Para crear una list de n elementos e inicializar cada elemento con el valor null , podríamos decir:

 // Sorry, I forgot the function name for this one. It // is not nullableListOf(...) val numbers : List<Int> = nullableListOf(n); 

Para crear una matriz, digamos, 5 elementos con una function de initialization para cada elemento de la matriz, podemos decir:

 val myArray : Array<Int> = Array(5, (i) => { /* return whatever */ }; 

Sin embargo, si me gustaría crear una List<Book> sin ningún libro, simplemente me gustaría inicializarlo así (código Java o C #):

 List<Book> books = new ArrayList<Book>(); // Java or List<Book> books = new List<Book>(); // C# 

¿Cómo puedo hacer eso en Kotlin?

¿Hay implementaciones públicamente expuestas de sus interfaces de recostackción? ¿Tienen constructores por defecto?