【问题标题】:Does Kotlin provide any implementations of its collection interfaces?Kotlin 是否提供其集合接口的任何实现?
【发布时间】:2016-09-06 09:20:14
【问题描述】:

我看到 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&lt;Book&gt;,但我只想像这样初始化它(Java 或 C# 代码):

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

我如何在 Kotlin 中做到这一点?

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

【问题讨论】:

标签: java c# kotlin


【解决方案1】:

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>()

【讨论】:

  • 谢谢。我知道我可以使用 Java 集合。我的印象是 Kotlin 标准库也提供了自己的实现。
  • 他们尽可能多地重用 java 以拥有一个小的标准库(对 android -> dex-count 有利)并最大限度地提高互操作性。
猜你喜欢
  • 2017-11-22
  • 2019-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多