List在Kotlin中编辑不可变的最佳方法是什么?
我明白这List实际上并不是不可变的,但是如果我将一个List函数传递给函数并且我需要整个列表减去一个元素,那么有没有一种支持的方法来处理它?如果我想要一个带有附加元素的整个列表呢?
Kir*_*man 13
如果您自己创建列表,而不是调用listOf("foo", "bar")call mutableListOf("foo", "bar")来获取a的实例MutableList.
如果您获得列表,例如作为方法的参数,请调用toMutableList()它以获取可变副本.
或者,使用的许多内置的扩展方法像一个map()或filter()得到一个新的 与修饰的元素列表.例如,要获取不使用前n个元素的列表drop(n).只获得前n个元素的调用take(n).在这里,您可以找到更多内置扩展方法.
如果您需要加入两个列表,只需使用加号运算符,如下所示:val newList = list1 + list2.
请注意,修改作为方法参数的列表可能会产生代码异味.这就是所有内置方法返回副本的原因.也是你的假设
我知道List实际上并不是不可变的
是错的.正如您在此处所看到的,如果您在listOf()不带参数的情况下调用,标准库将返回一个不可变的空列表.
在Java中,List默认情况下接口是可变的,当您尝试修改不可变列表(例如通过调用创建的列表)时,可能会导致异常Arrays.asList().这就是Kotlin的原因所在.
| 归档时间: |
|
| 查看次数: |
4450 次 |
| 最近记录: |