我正在尝试将一个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?>?
答案 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})