編集:私はあなたが経由でエントリを変更できることMap.Entry.setValue
を発見しました(そしてHashMap
実装は変更可能です)。ただし、特定のキーのエントリを取得するのは面倒であり、誰かがこれを行うのを見たことはありません。エントリのセットを取得することはできますが、私が知る限り、単一のキーのエントリを取得することはできません。
それを行うには1つの邪悪なHashMap
方法があります-パッケージ内の独自のサブクラスを宣言し、パッケージに委任するだけのパブリックメソッドをjava.util
作成します-プライベート既存のメソッド:
package java.util;
// Please don't actually do this...
public class BadMap<K, V> extends HashMap<K, V> {
public Map.Entry<K, V> getEntryPublic(K key) {
return getEntry(key);
}
}
しかし、それはかなり厄介です。
通常はエントリを変更しませんが、可変タイプの場合はもちろん、値内のデータを変更できます。
ただし、これを大量に実行しない限り、これが実際にはパフォーマンスのボトルネックであるかどうかは非常に疑わしいです。おそらく問題ではない何かを微調整しようとする前に、これが実際の問題であることを自分自身に証明するために、アプリケーションのプロファイルを作成する必要があります。
それが問題であることが判明した場合は、(たとえば)aMap<Integer, String>
をaに変更し、単純な可変ラッパータイプとしてMap<Integer, AtomicReference<String>>
使用できます。AtomicReference<T>