将一个arraylist复制到kotlin中的另一个arraylist

时间:2018-05-06 14:34:30

标签: arraylist kotlin

我正在尝试将一个ArrayList复制到Kotlin中的另一个ArrayList

第一ArrayList

private var leadList1: ArrayList<Lead> = ArrayList()

第二ArrayList

val leadList2: ArrayList<Lead?>?

我尝试使用addAll()leadList1.addAll(leadList2)

但它不起作用。

显示错误:

Required: Collection<Lead>
Found: kotlin.collections.ArrayList<Lead?>?

3 个答案:

答案 0 :(得分:9)

这样做不安全,因为您的第一个列表只能包含Lead类型的对象,而您的第二个列表的Lead?作为其类型参数,这意味着它可能包含{ {1}}值。您无法将这些内容添加到第一个列表中。

此问题的解决方案将取决于您的上下文,但您也可以让第一个列表包含可空元素:

null

或者您只能将第二个列表的非null元素添加到第一个列表中:

private var leadList1: ArrayList<Lead?> = ArrayList()

在任何一种情况下,您都必须对leadList1.addAll(leadList2.filterNotNull()) 执行空检查,因为整个列表本身也被标记为可能为空,由上一个leadList2表示。输入?

ArrayList<Lead?>?

答案 1 :(得分:1)

您可以简单地将另一个List实例传递到新List的构造函数中

if(!isDev)
    {
      autoUpdater.setFeedURL({
        "url":"https://github.com/MyUsername/MyRepos/releases/"
      });
      autoUpdater.checkForUpdates();
    }

答案 2 :(得分:0)

执行以下操作: leadList1.addAll(leadList2.orEmpty()。filterNotNull())

要按属性过滤,您可以这样:

leadList1.addAll(leadList2.orEmpty()。filter {item-> item?.type == YourTypeString})