Java Android:比较两个贴图键,如果键相等,则创建新对象
我有两个Java Android:比较两个贴图键,如果键相等,则创建新对象,java,android,Java,Android,我有两个LinkedHashMap,其中键可以是公共的(比如第一个映射中的键可以是“键”,第二个映射中的键也可以是“键”。我需要比较这两个映射,当键相等时,我想创建一个新对象,其中firsMapEntry.getValue()secondMapEntry.getValue()是新对象的属性[新建MyObject(firsMapEntry.getValue(),secondMapEntry.getValue())]。贴图位于集合中,因此我遍历集合 以下是我的消息来源: firstIterator
LinkedHashMap
,其中键可以是公共的(比如第一个映射中的键可以是“键”,第二个映射中的键也可以是“键”。我需要比较这两个映射,当键相等时,我想创建一个新对象,其中firsMapEntry.getValue()
secondMapEntry.getValue()是新对象的属性[新建MyObject(firsMapEntry.getValue(),secondMapEntry.getValue())
]。贴图位于集合中
,因此我遍历集合
以下是我的消息来源:
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);
}
}
firstIterator=firsCollection.iterator();
secondIterator=secondCollection.iterator();
while(firstIterator.hasNext()&&secondIterator.hasNext()){
Map firsMap=firstIterator.next();
Map secondMap=second迭代器
.next();
firstMapIterator=firstMap.entrySet().iterator();
secondMapIterator=secondMap.entrySet().iterator();
while(firstMapIterator.hasNext()&&secondMapIterator.hasNext()){
Map.Entry firstEntry=((Map.Entry)firstMapIterator.next());
Map.Entry secondEntry=((Map.Entry)secondMapIterator.next());
//在这里,我试图比较钥匙,但没有成功
//如果关键点相等,则创建新对象
My Object Object=新的MyObject(firsEntry.getValue(),
secondEntry.getValue());
Map Map=newlinkedhashmap有一个名为getKey()
的方法,使用此方法获取密钥。
由于您的密钥是一个字符串,请使用,Object.equals()
to,不要使用“==”,因此:
if(firstEntry .getKey().equals(secondEntry .getKey())){
//they are equal
}
else{
//they are different
}
你在哪里比较上面代码中的键?你删除了那部分并用注释替换了吗?是的,注释在哪里,我想要比较键。我有一些东西,比如if(firstkey.equals)(secondKey){…但是结果a我总是只有一个地图如果你在第一个地图中有地图条目1,2
,在第二个地图中有2,1
,怎么办?你使用LinkedHashMap
,所以插入顺序对你来说似乎很重要;因此问题我做了,但结果我只有一个地图,我认为它不起作用。也许吧某处有个bug。谢谢你们,我终于在源代码中找到了错误。