Kotlin合并了两个可空的可变列表

val mutableList1: MutableList? val mutableList2: MutableList? 

addAll方法可以用来合并可空的可变列表,但是,在这里它会引发我编译时错误。

例:

 val map1 = listOne?.map { TeamInvitationData(it) } val map2 = listTwo?.map { TeamInvitationData(it) } map1.addAll(map2) 

types接口失败,请尝试显式指定types参数。

在这里任何方式可以合并这两个数组,事先感谢。

2 Solutions collect form web for “Kotlin合并了两个可空的可变列表”

这里有几个解决方案。

  1. 如果您需要将所有元素添加mutableList1

     val mutableList1: MutableList? = ... val mutableList2: MutableList? = ... mutableList1?.let { list1 -> mutableList2?.let(list1::addAll) } 
  2. 如果你需要新的可空列表 ,结果如下:

     val mutableList1: MutableList? = ... val mutableList2: MutableList? = ... val list3: List? = mutableList1?.let { list1 -> mutableList2?.let { list2 -> list1 + list2 } } 
  3. 如果你需要新的可空的可变列表作为结果:

     val mutableList1: MutableList? = ... val mutableList2: MutableList? = ... val list3: MutableList? = mutableList1 ?.let { list1 -> mutableList2?.let { list2 -> list1 + list2 } } ?.toMutableList() 
  4. 如果您需要新的非空列表作为结果:

     val mutableList1: MutableList? = ... val mutableList2: MutableList? = ... val list3: List = mutableList1.orEmpty() + mutableList2.orEmpty() 

根据你的片段,这些片段没有一致的整体,我猜想你实际上想达到什么目的:

 val mutableList1: MutableList? = ... val mutableList2: MutableList? = ... val mapped1 = mutableList1?.mapTo(ArrayList()) { TeamInvitationData(it) } val mapped2 = mutableList2?.mapTo(ArrayList()) { TeamInvitationData(it) } mapped1?.addAll(mapped2.orEmpty()) 

要注意的关键点是map()不管输入列表的types如何都会返回一个不可变列表。 要得到一个可变列表,你必须使用mapTo(destination) { ... } 。 一旦解决了,你可以使用addAll() ,如最后一行所示。

  • Android录像机:未能获得表面
  • Android Studio 3.0会添加参数提示信息吗?
  • Kotlin:由于textView,Android应用程序意外停止
  • 如何创建需要find目标文档的Firestore事务
  • Android Studio gradle花费太长的时间来构建
  • 为什么可空数字不保存身份
  • Kotlin使用Gson的JSONParser解析对象数组
  • 我可以在没有Kotlin的情况下运行Android Studio 3.0吗?
  • 用drawable查看setBackground去除高程的阴影
  • Kotlin如何与Java和JavaScript互操作?
  • Kotlin 60秒后停止录音
  • Kotlin language will be the best programming language for Android.