JavaのHashMapの - のHashMap <文字列、ベクトル<文字列>>の値であるベクトルに新たな価値を付加する最適化された方法

Priyanshuシャルマ:

C ++のように、ベクターに新しい要素を追加すると同様の方法: -

myHashMap[myKey].push_back(newElement); //push newElement to the value vector directly

私はJavaで考えることができる唯一の方法は、ハッシュマップからベクトルを取得することです。ベクトルに新しい文字列を追加し、新しいベクターで再びキーを設定します。

myValue = myHashMap.get(myKey);
/**Check if the key exists

**/
//If exists
myValue.add(newElement);
myHashmap.put(myKey, myValue);

以前のように高速である第2のアプローチがあるとされていない場合、他のアプローチがありますか?感謝

user7:

あなたはそれに追加するときにすでにベクトルを変更しているように、マップのベクトルバックを戻す必要はありません。

myHashMap[myKey].push_back(newElement); 

によって達成されます

myHashMap.get(myKey)
     .add(newElement);

(仮定はmyHashMap.get(myKey)戻らないヌル)。


あなたは使用することができcomputeIfAbsent、初めて処理されたキーのためのベクトルオブジェクトを構築するために、Mapインタフェースに。これは、よりエレガントで、必要としない場合はブロックを。

myHashMap.computeIfAbsent(key, k -> new Vector<>())
            .add(newElement);

関数は、(k -> new Vector<>()あれば)のみが実行されmyHashMapたキーのマッピングを持っていませんkeyこのことについての素晴らしい事は、それがのベクトル値を返しているkey私たちは、チェーンできるように、addそれにコールを。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=284022&siteId=1