Kotlin编辑列表

在Kotlin中编辑不可变List的最好方法是什么?

我知道List实际上并不是不可变的,但是如果我将List传递给一个函数,并且我需要整个列表减去一个元素,那么是否有支持的方法来处理这个问题? 如果我想要一个额外的元素整个列表呢?

2 Solutions collect form web for “Kotlin编辑列表”

如果您自己创建列表,而不是调用listOf("foo", "bar")调用mutableListOf("foo", "bar")来获取MutableList一个实例。

如果你得到这个列表,例如作为一个方法的参数,调用它的toMutableList()来得到一个可变的副本

或者,使用诸如map()filter()之类的许多内置扩展方法之一来获取具有修改过的元素的列表。 例如,要得到一个没有前n个元素的列表,使用drop(n) 。 要获得只有前n个元素调用take(n) 。 在这里你可以find更多的内置扩展方法。

如果您需要连接两个列表,只需使用如下所示的加号运算符: val newList = list1 + list2

请注意,修改您的方法的参数列表可能是一种代码味道。 这就是为什么所有的内置方法返回副本。 也是你的假设

我知道List实际上并不是不变的

是错的。 正如你在这里看到的,如果你调用不带参数的listOf() ,标准库将返回一个不可变的空列表。

在Java中, List接口在默认情况下是可变的,当你试图修改一个不可变列表(比如通过调用Arrays.asList()创建的列表)时可能导致exception。 这就是为什么在Kotlin相反的情况。

如果你正在处理不可变列表,你想要做的是创建新的列表。 所以在你的情况下,如果你想要一个没有元素的列表,那么过滤该元素(在Kotlin中,你可以使用filter函数)并返回新的列表。

  • Facebook Ads SDK集成改变了现有的项目配置
  • Java不允许最终的默认方法..但是Kotlin?
  • 如何用JSON API支架列表制作KOTLIN列表
  • 在Kotlin中的types转换错误:ArrayList
  • Mutidex和Kotlin
  • 有可能改变一个实例的动态方法?
  • 在Kotlin的generics中扩展类
  • Android Kotlin - 如何使java builder setter方法
  • 如何链接两个Kotlin函数参数的generics?
  • 锁定Kotlin中的serialVersionUID
  • 可以帮助使数组在Kotlin中只有奇数
  • Kotlin language will be the best programming language for Android.