我想从一个或多个列表,地图或其他集合中创建列表,地图或其他集合。
在dart中,您使用以下语法生成一个或多个列表的列表:
List<int> l1 = [1, 2];
List<int> l2 = [3, 4, 5];
List<int> result = [...l1, ...l2];
//result == [1, 2, 3, 4, 5]
在科特林,我试图做同样的事情:
val l1 : List<Int> = listOf(1, 2)
val l2 : List<Int> = listOf(3, 4, 5)
val result: List<Int> = listOf(l1, l2);
//does not compile
有什么方法可以像在飞镖中展开...
语法那样的列表吗?
答案 0 :(得分:1)
在kotlin中,您只能使用l1 + l2。
val list1 = listOf(1, 2, 3, 4)
val list2 = listOf(3, 4, 5)
val list3 = list1 + list2 #[1, 2, 3, 4, 3, 4, 5]
此外,plus是另一个便捷的操作。
答案 1 :(得分:1)
有很多方法可以做到这一点!如先前的答案所建议。
但是...
的完全相同的行为在Kotlin列表中不存在。
但是您可以使用*
(数组扩展运算符)来扩展数组。
例如,如果您拥有:
val array1 = arrayOf(1, 2, 3)
val array2 = arrayOf(4, 5, 6)
val array1AndArray2 = arrayOf(*array1, *array2)
array1AndArray2的结果将为arrayOf(1、2、3、4、5、6)
但是据我所知,列表不支持此行为
有关更多信息,请检查:https://kotlinlang.org/docs/reference/functions.html
答案 2 :(得分:0)
您可以使用:
val result: List<Int> = l1.plus(l2)