如何 return 来自 linkedSetOf 的 MutableSet 与列表数据?
How to return MutableSet from linkedSetOf with list data?
"I'm preparing to create a MutableSet,how can i return it from a LinkedHashSet?"
"There is List data,then i tried to create a MutableSet from a LinkedHashSet with the list data."
在 Java 中,我创建了一个这样的集合:
private Set<Item> mItems;
public void onCreate(Bundle bundle) {
if (bundle == null) {
mItems = new LinkedHashSet<>();
} else {
List<Item> saved = bundle.getParcelableArrayList(STATE_SELECTION);
mItems = new LinkedHashSet<>(saved);
}
}
在kotlin中,我写了这样的代码:
var mItems: MutableSet<Item>? = null
fun onCreate(bundle: Bundle?) {
if (bundle == null) {
mItems = linkedSetOf()
} else {
val saved = bundle.getParcelableArrayList<Item>(STATE_SELECTION)
mItems = linkedSetOf(saved)
}
}
但是 AndroidStudio compiler:Required:Item,Found:ArrayList!
提示类型不匹配
或者我需要这样做吗?:
mItems = linkedSetOf(saved) as MutableSet<Item>
我使用隐蔽的 java 到 kotlin,它生成如下代码:
mItems = LinkedHashSet(saved)
但是 LinkedHashSet 来自 java.util.LinkedHashSet,kotlin 中是否有一些更惯用的方法?
你可以写linkedSetOf(*saved.toTypedArray())
。不确定它是否更地道 :) 在 Kotlin 中使用 Java 中的一些东西是可以的。在下面,linkedSetOf
也使用 LinkedHashSet
。
当您请求 MutableSet
时,Kotlin 总是会创建一个 LinkedHashSet
,因此您可以只使用标准方法。
private lateinit var mItems: MutableSet<Item>
public override fun onCreate(bundle: Bundle?) {
mItems = bundle?.getParcelableArrayList(STATE_SELECTION)
?.toMutableSet() ?: mutableSetOf()
}
"I'm preparing to create a MutableSet,how can i return it from a LinkedHashSet?"
"There is List data,then i tried to create a MutableSet from a LinkedHashSet with the list data."
在 Java 中,我创建了一个这样的集合:
private Set<Item> mItems;
public void onCreate(Bundle bundle) {
if (bundle == null) {
mItems = new LinkedHashSet<>();
} else {
List<Item> saved = bundle.getParcelableArrayList(STATE_SELECTION);
mItems = new LinkedHashSet<>(saved);
}
}
在kotlin中,我写了这样的代码:
var mItems: MutableSet<Item>? = null
fun onCreate(bundle: Bundle?) {
if (bundle == null) {
mItems = linkedSetOf()
} else {
val saved = bundle.getParcelableArrayList<Item>(STATE_SELECTION)
mItems = linkedSetOf(saved)
}
}
但是 AndroidStudio compiler:Required:Item,Found:ArrayList!
提示类型不匹配或者我需要这样做吗?:
mItems = linkedSetOf(saved) as MutableSet<Item>
我使用隐蔽的 java 到 kotlin,它生成如下代码:
mItems = LinkedHashSet(saved)
但是 LinkedHashSet 来自 java.util.LinkedHashSet,kotlin 中是否有一些更惯用的方法?
你可以写linkedSetOf(*saved.toTypedArray())
。不确定它是否更地道 :) 在 Kotlin 中使用 Java 中的一些东西是可以的。在下面,linkedSetOf
也使用 LinkedHashSet
。
当您请求 MutableSet
时,Kotlin 总是会创建一个 LinkedHashSet
,因此您可以只使用标准方法。
private lateinit var mItems: MutableSet<Item>
public override fun onCreate(bundle: Bundle?) {
mItems = bundle?.getParcelableArrayList(STATE_SELECTION)
?.toMutableSet() ?: mutableSetOf()
}