0

キーを共通にすることができる場所が 2 つLinkedHashMap<String, MyType>あります (たとえば、最初のマップのキーを「キー」にすることができ、2 番目のマップのキーを「キー」にすることもできます)。この 2 つのマップを比較する必要があり、キーが等しい場合は新しいオブジェクトを作成します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>>。私の方法が効率的かどうかはわかりませんが、2 つのキーを比較し、値から新しいオブジェクトを作成する方法を教えてください。すべての助けをいただければ幸いです。ありがとうございました。

4

1 に答える 1

1

Map.Entryには というメソッドがありgetKey()、これを使用してキーを取得します。
あなたのキーは String use であるため、それらObject.equals()比較するには、「==」を使用しないでください。

    if(firstEntry .getKey().equals(secondEntry .getKey())){
    //they are equal
    }
else{
    //they are different
    }
于 2013-01-06T18:33:50.527 に答える