我有两个哈希映射:一个包含一个Integer键和一个String值。
另一个包含Integer键和float值。
Map<Integer,String> mapA = new HashMap<>();
mapA.put(1, "AS");
mapA.put(2, "Wf");
Map<Integer,Float> mapB = new HashMap<>();
mapB.put(2, 5.0f);
mapB.put(3, 9.0f);
我的问题是如何使用整数键值比较两个哈希映射?我想在键值相同时打印位图值。
答案 0 :(得分:1)
您只需迭代mapA
的密钥,然后检查它是否存在于mapB
中,然后将该值添加到第三个mapC
。
Map<String, float> mapC = new HashMap<String, float>();
for (Integer key : mapA.keySet()) {
if (mapB.containsKey(key)) {
mapC.put(mapA.get(key), mapB.get(key));
}
}
答案 1 :(得分:0)
使用mapB迭代器比较两个地图中的键。
Iterator<Entry<Integer, Float>> iterator = mapB.entrySet().iterator();
while(iterator.hasNext()) {
Entry<Integer, Float> entry = iterator.next();
Integer integer = entry.getKey();
if(mapA.containsKey(integer)) {
System.out.println("Float Value : " + entry.getValue());
}
}
答案 2 :(得分:0)
如果您允许修改mapB
,则解决方案就像mapB.keySet().retainAll(mapA.keySet());
一样简单。
这只会在mapB
中保留mapA
中具有相应密钥的条目,因为keySet()
返回的集合由地图本身支持,对其所做的任何更改都将被反映到地图上。
答案 3 :(得分:0)
是的,我得到了解决方案......
if(mapB.containsKey(position)){
Log.e("bucky",mapB.get(position));}
position表示整数值。
答案 4 :(得分:0)
使用Java 8 Streams API:
function log(...args) {
const [descriptor] = args;
const { kind, elements } = descriptor;
const newElements = elements.concat({
kind: "method",
placement: "prototype",
key: "constructor",
descriptor: {
value: (...args) => {
// I have tried this but it doesn't work...
console.log("log", args);
},
configurable: true,
writable: true,
enumerable: true,
},
});
return {
kind,
elements: newElements,
};
}