0
我正在嘗試使用Kotlin在更實用的樣式中遍歷嵌套的Hashmap。特別是,我有兩個HashMap實例(都是Map<String, Integer>
),我想根據一些標準匹配它們的值。這裏是什麼,我要實現的Java方法:如何在Kotlin的嵌套Hashmap迭代中使用`filterValues`?
Map<Integer, Integer> pairs = new LinkedHashMap<>();
for (Map.Entry<String, Integer> oldImages : startingImageMap.entrySet()) {
for (Map.Entry<String, Integer> newImages : finalImageMap.entrySet()) {
Integer oldImageVal = oldImages.getValue();
Integer newImageVal = newImages.getValue();
boolean containsNewType = pairs.containsKey(newImageVal) &&
pairs.get(newImageVal).intValue() == oldImageVal.intValue();
boolean urlsMatch = newImages.getKey().equals(oldImages.getKey());
if (!containsNewType && urlsMatch) {
pairs.put(oldImageVal, newImageVal);
}
}
}
return pairs;
這裏是我的科特林在功能上等同的嘗試:
private val swapPairs: Map<Int, Int>
get() {
val pairs = LinkedHashMap<Int, Int>()
startingImageMap.forEach {
val finalImageMap = finalImageMap.filterValues {
val containsNewType = pairs.containsKey(it) && pairs[it] == startingImageMap[it]
val urlMatch = it == startingImageMap[it]
return !containsNewType && urlsMatch
}.values.first()
}
return pairs
}
我堅持就如何做到這一點使用filterValues
正常。 Kotlin的正確解決方案是什麼樣的?