4

数百の値を含む Java マップがあり、このコードを使用して別のコピーを作成したい場合:

LinkedHashMap<String, Vector<String>> map1 = new LinkedHashMap<String, Vector<String>>();
LinkedHashMap<String, Vector<String>> map2 = new LinkedHashMap<String, Vector<String>>( map1 );

次に、map1 の Vector エントリの値を変更すると、map2 でも影響を受けます。私はそれを望んでいません。map2 を map1 で完全に独立させたい。

それを行う最善の方法は何ですか?

4

1 に答える 1

9

基本的に、各ベクターのクローンを作成する必要があります。

LinkedHashMap<String, Vector<String>> map2 = new LinkedHashMap<String, Vector<String>>();
for (Map.Entry<String, Vector<String>> entry : map1.entrySet()) {
    Vector<String> clone = new Vector<String>(entry.getValue());
    map2.put(entry.getKey(), clone);
}

もちろん、それよりも深く進む必要はありません。なぜなら、Stringは不変だからです。

Vector(ちなみに、ではなく使用している理由はありますArrayListか?)

于 2012-09-11T04:35:27.933 に答える