我有两个LinkedHashMap<String, MyType>
,其中键可以是常见的(说第一个映射的键可以是"key",第二个映射的键也可以是"key")。我需要比较这两个映射,当键相等时,我想创建一个新对象,其中firsMapEntry.getValue()
secondMapEntry.getValue()
是新对象[new MyObject(firsMapEntry.getValue(), secondMapEntry.getValue())
]的属性。地图是在Collection
,所以我通过集合迭代。
来源:
firstIterator = firsCollection.iterator();
secondIterator = secondCollection.iterator();
while (firstIterator.hasNext() && secondIterator.hasNext()) {
Map<String, MyType1> firsMap = firstIterator.next();
Map<String, List<MyType2>> secondMap = secondIterator
.next();
firstMapIterator = firstMap.entrySet().iterator();
secondMapIterator = secondMap.entrySet().iterator();
while (firstMapIterator.hasNext() && secondMapIterator.hasNext()) {
Map.Entry<String, MyType1> firstEntry = ((Map.Entry<String, MyType1>) firstMapIterator.next());
Map.Entry<String, List<MyType2>> secondEntry = ((Map.Entry<String, List<MyType2>>) secondMapIterator.next());
// Here I was trying to compare keys but unsuccessfuly
// if keys are equal create new object
My Object object = new MyObject(firsEntry.getValue(),
secondEntry.getValue());
Map<String, MyObject> map = new LinkedHashMap<String,MyObject(); map.put("key", object);
}
}
方法的返回类型是List<Map<String, MyObject>>
。我不知道我的方法是否有效,但是如何比较两个键并从值创建新对象。我们将感激每一个帮助。谢谢你。
地图。条目有一个名为getKey()
的方法,使用该方法获取密钥。
因为你的键是一个字符串使用,Object.equals()
来比较它们,不要使用'==',所以:
if(firstEntry .getKey().equals(secondEntry .getKey())){
//they are equal
}
else{
//they are different
}