将 List<Keys> 和 List<Values> 合并为 List<Hashmap<Key,Value>>
Merge List<Keys> and List<Values> into List<Hashmap<Key,Value>>
我有两个列表;
val keys: List<String> = listOf("key1", "key2", "key3"...)
val values: List<String> = listOf("value1", "value2", "value3"...)
如何将它们合并为一个List<Hashmap<Key,Value>>
?喜欢;
println(List<Hashmap<Key,Value>>)
: [[key1 = value1], [key2 = value2], [key3 = value3]...
我会这样做的。
创建您自己的 class
class MyMap{
String key;
String value;
}
然后是
List<MyMap> newList = new ArrayList<>();
for (int i=0;i<keys.size();i++){
newList.add(new MyMap(keys.get(i),values.get(i)));
}
在惯用的 Kotlin 中,它看起来像这样:
val keys: List<String> = listOf("key1", "key2", "key3")
val values: List<String> = listOf("value1", "value2", "value3")
val result = keys.zip(values).map { hashMapOf(it) }
这里,hashMapOf(...)
接受对 (Pair<K, V>
),这正是 zip
产生的元素。
或者,您可以使用 zip
的重载,它接受 lambda 并映射对,而无需额外调用 map
:
val result = keys.zip(values) { k, v -> hashMapOf(k to v) }
结果是映射列表,每个映射包含映射到值的单个键。
相反的选择是创建包含所有对的单个地图,可以按如下方式生成:
val result = HashMap(keys.zip(values).toMap())
我有两个列表;
val keys: List<String> = listOf("key1", "key2", "key3"...)
val values: List<String> = listOf("value1", "value2", "value3"...)
如何将它们合并为一个List<Hashmap<Key,Value>>
?喜欢;
println(List<Hashmap<Key,Value>>)
: [[key1 = value1], [key2 = value2], [key3 = value3]...
我会这样做的。 创建您自己的 class
class MyMap{
String key;
String value;
}
然后是
List<MyMap> newList = new ArrayList<>();
for (int i=0;i<keys.size();i++){
newList.add(new MyMap(keys.get(i),values.get(i)));
}
在惯用的 Kotlin 中,它看起来像这样:
val keys: List<String> = listOf("key1", "key2", "key3")
val values: List<String> = listOf("value1", "value2", "value3")
val result = keys.zip(values).map { hashMapOf(it) }
这里,hashMapOf(...)
接受对 (Pair<K, V>
),这正是 zip
产生的元素。
或者,您可以使用 zip
的重载,它接受 lambda 并映射对,而无需额外调用 map
:
val result = keys.zip(values) { k, v -> hashMapOf(k to v) }
结果是映射列表,每个映射包含映射到值的单个键。
相反的选择是创建包含所有对的单个地图,可以按如下方式生成:
val result = HashMap(keys.zip(values).toMap())