我想学习Kotlin,并尝试将多个对象(每个对象管理两个int)转移到一个列表(该列表管理两个int的散列表)中。
这是新对象:
public class HashObject(val maps: MutableList<HashMap<Int, Int>>){
...
}
这是旧对象:
public class OldObject(
val a: Int,
val b: Int
)
我有一张旧物品的清单:
val oldObjects: List<OldObject> = ...
我正试着像这样转移它:
val hashObjects = mutableListOf<HashMap<Int, Int>>()
for(obj in oldObjects){
hashObjects.add(hashMapOf(obj.a to obj.b))
val result = HashObject(maps = hashObjects)
但我得到了以下错误:
Type mismatch.
Required: kotlin.collections.HashMap<Int, Int> /* = java.util.HashMap<Int, Int> */
Found: MutableList<java.util.HashMap<Int, Int>>
我怎样才能解决这个问题?
2条答案
按热度按时间lrl1mhuk1#
另一种方法就是
svgewumm2#
这个问题看起来有点混乱,但我怀疑真正需要的是一个从Int到Int的Map。 实现这个Map的最简单(也是最有效)的方法之一是:
这给出了一个
Map<Int, Int>
,其中每个原始OldObject都有一个条目 (需要注意的是,如果多个OldObject有相同的键,那么只有最后一个OldObject才会包含在结果中。 如果在这种情况下需要保存所有OldObject,那么map就不是正确的结构)。(If你需要结果是可变的,然后你可以在它上面调用
toMutableMap()
--但是通常在可能的情况下坚持不变的对象会更简单和安全。)