Kotlin是否提供其集合接口的任何实现?

时间:2016-09-06 09:20:14

标签: java c# kotlin

我看到Kotlin提供了许多用于实现集合的接口。它们列在this page

我没有看到Kotlin提供的任何实现。

但是,我确实看到全局命名空间中有一些函数可以帮助我们创建这些集合的实例。对于例如为了创建一个可变的数字列表,我们可以说:

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

要创建列表的只读视图,我们可以说:

val readOnlyViewOfNumbers : List<Int> = numbers;

或者,要创建一个只读的数字列表,我们可以说:

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

要创建n项列表并使用值null初始化每个元素,我们可能会说:

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

要为阵列的每个元素创建一个数组,比如5个带有初始化函数的元素,我们可以说:

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

但是,如果我想创建一个没有任何书籍的List<Book>,但我只是想像这样初始化它(Java或C#代码):

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

我怎么能在Kotlin那样做?

是否有公开的集合接口实现?他们有默认的构造函数吗?

1 个答案:

答案 0 :(得分:5)

Kotlin使用Java的实现。

所以

val list = listOf<T>()

基本上是

val list: List<T> = ArrayList<T>()

这些功能是为方便起见而创建的

使用Java-Collections也很好:

val list: List<Book> = ArrayList<Book>()
val mutableList: MutableList<Book> = ArrayList<Book>()