2013-01-06 1 views
0

LinkedHashMap<String, MyType> 두 개의 키가있을 수 있습니다. 첫 번째지도의 키는 '키'이고 두 번째지도의 키는 '키'가 될 수 있습니다. 이 두지도를 비교해야하고 키가 동일한 경우 나는 firsMapEntry.getValue()secondMapEntry.getValue()Collection 그래서 난 컬렉션을 통해 반복에 [new MyObject(firsMapEntry.getValue(), secondMapEntry.getValue())]지도는 새로운 객체의 속성이 어디에 새로운 객체를 생성하려면 다음 Android : 키가 동일하면 두 개의지도 키를 비교합니다.

내 소스입니다 :..

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>>입니다. 내 방법이 효과적인지 모르겠지만 두 키를 비교하고 값에서 새 개체를 만드는 방법. 모든 도움을 주시면 감사하겠습니다. 고맙습니다.

+0

당신이 위의 코드에서 키를 비교하는 경우? 그 조각을 제거하고 의견으로 대체 했습니까? – Swapnil

+0

예 의견은 어디에 있습니까? 비교 키가 필요합니다. 나는 sth했다. if (firstkey.equals (secondKey) {...하지만 결과로 항상 하나의지도를 얻었습니다. – Martin

+0

첫 번째지도에는 '1,2', 두 번째지도에는 '2, 1'이 있습니까? LinkedHashMap을 사용하면 삽입 순서가 중요해 보입니다. 따라서 – fge

답변

1

Map.Entry에는 getKey()이라는 메서드가 있습니다. 이것을 사용하여 키를 가져옵니다. 키 이후
때문에, '=='사용하지 않는, compare them에 문자열 사용 Object.equals()입니다 :

if(firstEntry .getKey().equals(secondEntry .getKey())){ 
    //they are equal 
    } 
else{ 
    //they are different 
    } 
+0

질문을했지만 결과적으로지도가 하나 뿐이므로 작동하지 않는다고 생각했습니다. 아마도 버그가있을 수 있습니다. 어딘가에. – Martin

+0

마침내 나는 소스에서 실수를 발견했습니다. – Martin

관련 문제