K
- このマップで保持されるキーの型V
- マップされる値の型public interface Map<K,V>
このインタフェースは、インタフェースというよりむしろ完全に抽象クラスであったDictionaryクラスに代わるものです。
Mapインタフェースが提供する3つのコレクション・ビューにより、マップの内容を、キーのセット、値のコレクション、あるいはキーと値のマッピングのセットとして表示できるようになります。マップの順序は、マップのコレクション・ビューのイテレータが要素を返すときの順序として定義されます。TreeMapクラスなど一部のマップの実装では、順序について保証しますが、HashMapクラスなどの実装では順序は保証されません。
注:可変オブジェクトをマップ・キーとして使用する場合は細心の注意が必要です。オブジェクトがマップ内のキーであるときに、equalsの比較に影響を与える方法でオブジェクトの値が変更された場合、マップの動作は保証されません。この禁止事項の特殊な例として、マップがそれ自身をキーとして持つことができないことが挙げられます。マップがそれ自身を値として持つことは許可されますが、その場合は細心の注意が必要です。そのようなマップではequalsメソッドおよびhashCodeメソッドの動作は保証されません。
汎用マップの実装クラスはすべて、次の2つの標準的なコンストラクタを提供するようにしてください。空のマップを作成するvoid (引数なし)コンストラクタと、Map型の引数を1つ持ち、その引数と同じキーと値のマッピングで新しいマップを作成するコンストラクタです。その結果、ユーザーは、後者のコンストラクタを使用して任意のマップをコピーすることにより、必要なクラスと等価なマップを作成できます。これは推奨される方法ではありませんが(インタフェースはコンストラクタを持つことができないため)、JDKでの汎用マップの実装はすべてこれに従っています。
このインタフェースに含まれている「破壊的な」メソッド(処理対象のマップを変更するメソッド)は、このマップがそのオペレーションをサポートしていない場合にUnsupportedOperationExceptionをスローするように指定されています。このとき、呼出しがマップに影響を及ぼさない場合、これらのメソッドはUnsupportedOperationExceptionをスローすることがありますが、必須ではありません。たとえば、マッピングを「重ね合わせる」マップが空の場合に、変更不可能なマップでputAll(Map)
メソッドを呼び出すと、例外をスローすることがありますが、必須ではありません。
マップの実装には、格納できるキーと値に制限があるものもあります。たとえば、nullキーとnull値を禁止する実装や、nullキーの型に制限がある実装もあります。不適当なキーまたは値を挿入しようとすると、通常NullPointerExceptionまたはClassCastExceptionのような非チェック例外がスローされます。不適当なキーや値があるかどうかを照会しようとすると、例外がスローされる場合や、ただfalseを返す場合もあります。前者の動作を実行する実装もあれば、後者の動作を実行する実装もあります。もう少し一般的に言うと、不適当なキーまたは値を処理しようとしてマップへの挿入が完了しない場合、例外がスローされるか成功するかは実装の任意です。このインタフェースの仕様では、そうした例外は「任意」と記載されています。
Collections Frameworkインタフェース内の多数のメソッドは、equals
メソッドとの関連で定義されます。たとえば、containsKey(Object key)
メソッドの仕様は、「このマップに(key==null ? k==null : key.equals(k))を満たすキーkが含まれる場合にのみ、trueを返す」というものです。この仕様は、「null以外の引数keyを使用してMap.containsKeyを呼び出すと、キーkでkey.equals(k)が呼び出される」と理解すべきではありません。実装は、最初に2つのキーのハッシュ・コードを比較するなど、equals呼出しを回避するための最適化を自由に実装できます。(Object.hashCode()
仕様では、等価ではないハッシュ・コードを保持する2つのオブジェクトは等価ではないことが保証されます。)もう少し一般的に言うと、さまざまなCollections Frameworkインタフェースの実装で、実装者が適切と判断するなら、基本となるObject
メソッドの指定された動作を自由に利用できます。
マップの再帰的トラバースを実行する一部のマップ操作は、マップが自身を直接または間接に含んでいる自己参照インスタンスに対する例外で失敗する場合があります。これには、clone()
、equals()
、hashCode()
、およびtoString()
メソッドが含まれます。実装ではオプションで自己参照シナリオを処理できますが、最新の実装では行われていません。
このインタフェースは、Java Collections Frameworkのメンバーです。
修飾子と型 | メソッドと説明 |
---|---|
void |
clear()
マップからマッピングをすべて削除します(オプションの操作)。
|
default V |
compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
指定されたキーと現在マップされている値に対するマッピングの計算を試みます(現在のマッピングが存在しない場合は
null )。 |
default V |
computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)
指定されたキーがまだ値に関連付けられていない(または
null にマップされている)場合、指定されたマッピング関数を使用してその値の計算を試行し、null でない場合はそれをこのマップに入力します。 |
default V |
computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
指定されたキーの値が存在していてnull以外の場合、キーと現在マップされている値から新しいマッピングの計算を試みます。
|
boolean |
containsKey(Object key)
指定のキーのマッピングがこのマップに含まれている場合にtrueを返します。
|
boolean |
containsValue(Object value)
マップが1つまたは複数のキーを指定された値にマッピングしている場合にtrueを返します。
|
Set<Map.Entry<K,V>> |
entrySet()
このマップに含まれるマッピングの
Set ビューを返します。 |
boolean |
equals(Object o)
指定されたオブジェクトがこのマップと等しいかどうかを比較します。
|
default void |
forEach(BiConsumer<? super K,? super V> action)
このマップのすべてのエントリの処理が完了するかアクションから例外がスローされるまで、各エントリに対して指定されたアクションを実行します。
|
V |
get(Object key)
指定されたキーがマップされている値を返します。このマップにそのキーのマッピングが含まれていない場合は
null を返します。 |
default V |
getOrDefault(Object key, V defaultValue)
指定されたキーがマップされている値を返します。このマップにそのキーのマッピングが含まれていない場合は
defaultValue を返します。 |
int |
hashCode()
マップのハッシュ・コード値を返します。
|
boolean |
isEmpty()
このマップがキーと値のマッピングを保持しない場合にtrueを返します。
|
Set<K> |
keySet()
このマップに含まれるキーの
Set ビューを返します。 |
default V |
merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction)
指定されたキーがまだ値と関連付けられていないかnullと関連付けられている場合、指定されたnull以外の値に関連付けます。
|
V |
put(K key, V value)
指定された値と指定されたキーをこのマップで関連付けます(オプションの操作)。
|
void |
putAll(Map<? extends K,? extends V> m)
指定されたマップのすべてのマッピングをこのマップにコピーします(オプションの操作)。
|
default V |
putIfAbsent(K key, V value)
指定されたキーがまだ値に関連付けられていない(または、
null にマップされている)場合は、それを指定された値に関連付けてnull を返します。それ以外の場合は、現在の値を返します。 |
V |
remove(Object key)
このマップからキーのマッピング(ある場合)を削除します(オプションの操作)。
|
default boolean |
remove(Object key, Object value)
指定された値に指定されたキーが現在マッピングされている場合にのみ、そのキーのエントリを削除します。
|
default V |
replace(K key, V value)
指定されたキーがなんらかの値に現在マッピングされている場合にのみ、そのキーのエントリを置換します。
|
default boolean |
replace(K key, V oldValue, V newValue)
指定されたキーが指定された値に現在マッピングされている場合にのみ、そのキーのエントリを置換します。
|
default void |
replaceAll(BiFunction<? super K,? super V,? extends V> function)
すべてのエントリが処理されるか、または関数が例外をスローするまで、各エントリの値を、そのエントリで指定された関数を呼び出した結果で置換します。
|
int |
size()
このマップ内のキー値マッピングの数を返します。
|
Collection<V> |
values()
このマップに含まれる値の
Collection ビューを返します。 |
int size()
boolean isEmpty()
boolean containsKey(Object key)
key
- このマップ内にあるかどうかが判定されるキーClassCastException
- このキーがこのマップに適さない型の場合(オプション)NullPointerException
- 指定されたキーがnullであり、このマップがnullキーを許可しない場合(オプション)boolean containsValue(Object value)
value
- このマップにあるかどうかが判定される値ClassCastException
- 値がマップに適さない型の場合(オプション)NullPointerException
- 指定された値がnullであり、このマップがnull値を許可しない場合(オプション)V get(Object key)
null
を返します。
つまり、このメソッドは、(key==null ? k==null : key.equals(k))
となるキーk
から値v
へのマッピングがこのマップに含まれている場合はv
を返し、それ以外の場合はnull
を返します。(このようなマッピングは1つのみ存在できます。)
このマップがnull値を許可する場合、戻り値のnull
は、マップがキーのマッピングを保持していないことを示すとはかぎりません。つまり、マップが明示的にキーをnull
にマップすることもあります。containsKey
オペレーションを使うと、これらの2つの場合を区別できます。
key
- 関連付けられた値が返されるキーnull
ClassCastException
- このキーがこのマップに適さない型の場合(オプション)NullPointerException
- 指定されたキーがnullであり、このマップがnullキーを許可しない場合(オプション)V put(K key, V value)
m.containsKey(k)
がtrueを返す場合にかぎり、マップmはキーkのマッピングを含むと言えます。key
- 指定された値が関連付けられるキーvalue
- 指定されたキーに関連付けられる値UnsupportedOperationException
- putオペレーションがこのマップでサポートされない場合ClassCastException
- 指定されたキーまたは値のクラスが原因で、このマップにそれらを格納できない場合NullPointerException
- 指定されたキーまたは値がnullであり、このマップがnullのキーまたは値を許可しない場合IllegalArgumentException
- 指定されたキーまたは値のあるプロパティが原因で、このマップにそれらを格納できない場合V remove(Object key)
(key==null ? k==null : key.equals(k))
となるキーkから値vへのマッピングがこのマップに含まれる場合、このマッピングは削除されます。(マップはこのようなマッピングを1つだけ含めることができます。)
このマップが以前にこのキーを関連付けていた値を返します。キーに対するマッピングがマップになかった場合はnullを返します。
このマップがnull値を許可する場合、戻り値のnullは、マップがキーのマッピングを保持していなかったことを示すとはかぎりません。つまり、マップが明示的にキーをnullにマップしていた可能性もあります。
呼出しが戻ると、マップは指定されたキーのマッピングを含まなくなります。
key
- マッピングがマップから削除されるキーUnsupportedOperationException
- removeオペレーションがこのマップでサポートされない場合ClassCastException
- このキーがこのマップに適さない型の場合(オプション)NullPointerException
- 指定されたキーがnullであり、このマップがnullキーを許可しない場合(オプション)void putAll(Map<? extends K,? extends V> m)
put(k, v)
を1回呼び出した場合と同じです。オペレーションの進行中に、指定されたマップが変更された場合の、このオペレーションの動作は定義されていません。m
- このマップに格納されるマッピングUnsupportedOperationException
- putAllオペレーションがこのマップでサポートされない場合ClassCastException
- 指定されたマップ内のキーまたは値のクラスが原因で、このマップにそれらを格納できない場合NullPointerException
- 指定されたマップがnullである場合、またはこのマップがnullのキーまたは値を許可せず、指定されたマップにnullのキーまたは値が含まれている場合IllegalArgumentException
- 指定されたマップ内のキーまたは値のあるプロパティが原因で、このマップにそれらを格納できない場合void clear()
UnsupportedOperationException
- clearオペレーションがこのマップでサポートされない場合Set<K> keySet()
Set
ビューを返します。セットはマップと連動しているので、マップに対する変更はセットに反映され、また、セットに対する変更はマップに反映されます。セットの反復処理中にマップが変更された場合、反復処理の結果は定義されていません(イテレータ自身のremoveオペレーションを除く)。セットは要素の削除をサポートします。Iterator.remove、Set.remove、removeAll、retainAll、およびclearオペレーションで対応するマッピングをマップから削除します。addまたはaddAllオペレーションはサポートしていません。Collection<V> values()
Collection
ビューを返します。コレクションはマップと連動しているので、マップに対する変更はコレクションに反映され、またコレクションに対する変更はマップに反映されます。コレクションの反復処理中にマップが変更された場合、反復処理の結果は定義されていません(イテレータ自身のremoveオペレーションを除く)。コレクションは要素の削除をサポートします。Iterator.remove、Collection.remove、removeAll、retainAll、およびclearオペレーションで対応するマッピングをマップから削除します。addまたはaddAllオペレーションはサポートしていません。Set<Map.Entry<K,V>> entrySet()
Set
ビューを返します。セットはマップと連動しているので、マップに対する変更はセットに反映され、また、セットに対する変更はマップに反映されます。セットの反復処理中にマップが変更された場合、反復処理の結果は定義されていません(イテレータ自身のremoveオペレーション、またはイテレータにより返されるマップ・エントリに対するsetValueオペレーションを除く)。セットは要素の削除をサポートします。Iterator.remove、Set.remove、removeAll、retainAll、およびclearオペレーションで対応するマッピングをマップから削除します。addまたはaddAllオペレーションはサポートしていません。boolean equals(Object o)
equals
、クラス: Object
o
- このマップと等しいかどうかが比較されるオブジェクトObject.hashCode()
、HashMap
int hashCode()
Object.hashCode()
の一般規約によって要求されるように、任意の2つのマップm1とm2でm1.equals(m2)であれば、m1.hashCode()==m2.hashCode()となることが保証されます。hashCode
、クラス: Object
Map.Entry.hashCode()
, Object.equals(Object)
, equals(Object)
default V getOrDefault(Object key, V defaultValue)
defaultValue
を返します。key
- 関連付けられた値が返されるキーdefaultValue
- キーのデフォルト・マッピングdefaultValue
ClassCastException
- このキーがこのマップに適さない型の場合(オプション)NullPointerException
- 指定されたキーがnullであり、このマップがnullキーを許可しない場合(オプション)default void forEach(BiConsumer<? super K,? super V> action)
map
では、デフォルト実装は次と同等です。
for (Map.Entry<K, V> entry : map.entrySet())
action.accept(entry.getKey(), entry.getValue());
デフォルト実装は、このメソッドの同期または原子性プロパティに関してなにも保証しません。原子性保証を提供するすべての実装は、このメソッドをオーバーライドし、その並行性プロパティをドキュメント化する必要があります。action
- 各エントリに対して実行されるアクションNullPointerException
- 指定されたアクションがnullである場合ConcurrentModificationException
- 削除するエントリが反復中に見つからない場合default void replaceAll(BiFunction<? super K,? super V,? extends V> function)
このmap
では、デフォルト実装は次と同等です。
for (Map.Entry<K, V> entry : map.entrySet())
entry.setValue(function.apply(entry.getKey(), entry.getValue()));
デフォルト実装は、このメソッドの同期または原子性プロパティに関してなにも保証しません。原子性保証を提供するすべての実装は、このメソッドをオーバーライドし、その並行性プロパティをドキュメント化する必要があります。
function
- 各エントリに適用する関数UnsupportedOperationException
- set
オペレーションがこのマップのエントリ・セット・イテレータでサポートされない場合。ClassCastException
- 置換値のクラスが、置換値がこのマップに格納されることを妨げる場合NullPointerException
- 指定された関数がnullの場合、または指定された置換値がnullでこのマップがnull値を許可しない場合ClassCastException
- 置換値の型がこのマップに不適切な場合(オプション)NullPointerException
- 関数または置換値がnullで、このマップがnullキーまたは値を許可しない場合(オプション)IllegalArgumentException
- 置換値のなんらかのプロパティが、置換値がこのマップに格納されることを妨げる場合(オプション)ConcurrentModificationException
- 削除するエントリが反復中に見つからない場合default V putIfAbsent(K key, V value)
null
にマップされている)場合は、それを指定された値に関連付けてnull
を返します。それ以外の場合は、現在の値を返します。map
では、デフォルト実装は次と同等です。
V v = map.get(key);
if (v == null)
v = map.put(key, value);
return v;
デフォルト実装は、このメソッドの同期または原子性プロパティに関してなにも保証しません。原子性保証を提供するすべての実装は、このメソッドをオーバーライドし、その並行性プロパティをドキュメント化する必要があります。
key
- 指定された値が関連付けられるキーvalue
- 指定されたキーに関連付けられる値null
。(また、実装がnull値をサポートしている場合、戻り値null
は、以前にマップでキーとnull
が関連付けられていたことを示す場合もある。)UnsupportedOperationException
- put
操作がこのマップでサポートされない場合(オプション)ClassCastException
- キーまたは値がこのマップに適さない型の場合(オプション)NullPointerException
- 指定されたキーまたは値がnullであり、かつこのマップがnullのキーまたは値を許可しない場合(オプション)IllegalArgumentException
- 指定されたキーまたは値のなんらかのプロパティが、それらがこのマップに格納されるのを妨げる場合(オプション)default boolean remove(Object key, Object value)
map
では、デフォルト実装は次と同等です。
if (map.containsKey(key) && Objects.equals(map.get(key), value)) {
map.remove(key);
return true;
} else
return false;
デフォルト実装は、このメソッドの同期または原子性プロパティに関してなにも保証しません。原子性保証を提供するすべての実装は、このメソッドをオーバーライドし、その並行性プロパティをドキュメント化する必要があります。
key
- 指定された値が関連付けられるキーvalue
- 指定されたキーに関連付けられていると予想される値true
UnsupportedOperationException
- remove
操作がこのマップでサポートされない場合(オプション)ClassCastException
- キーまたは値がこのマップに適さない型の場合(オプション)NullPointerException
- 指定されたキーまたは値がnullであり、かつこのマップがnullのキーまたは値を許可しない場合(オプション)default boolean replace(K key, V oldValue, V newValue)
map
では、デフォルト実装は次と同等です。
if (map.containsKey(key) && Objects.equals(map.get(key), value)) {
map.put(key, newValue);
return true;
} else
return false;
デフォルト実装は、oldValueがnullの場合でもnewValueもnullでない場合にはnull値をサポートしないマップに対して、NullPointerExceptionをスローしません。
デフォルト実装は、このメソッドの同期または原子性プロパティに関してなにも保証しません。原子性保証を提供するすべての実装は、このメソッドをオーバーライドし、その並行性プロパティをドキュメント化する必要があります。
key
- 指定された値が関連付けられるキーoldValue
- 指定されたキーに関連付けられていると予想される値newValue
- 指定されたキーに関連付けられる値true
UnsupportedOperationException
- put
操作がこのマップでサポートされない場合(オプション)ClassCastException
- 指定されたキーまたは値のクラスが原因で、このマップにそれを格納できない場合NullPointerException
- 指定されたキーまたはnewValueがnullで、このマップがnullキーまたは値を許可しない場合NullPointerException
- oldValueがnullで、このマップがnull値を許可しない場合(オプション)IllegalArgumentException
- 指定されたキーまたは値のあるプロパティが原因で、それをこのマップに格納できない場合default V replace(K key, V value)
map
では、デフォルト実装は次と同等です。
if (map.containsKey(key)) {
return map.put(key, value);
} else
return null;
デフォルト実装は、このメソッドの同期または原子性プロパティに関してなにも保証しません。原子性保証を提供するすべての実装は、このメソッドをオーバーライドし、その並行性プロパティをドキュメント化する必要があります。
key
- 指定された値が関連付けられるキーvalue
- 指定されたキーに関連付けられる値null
。(また、実装がnull値をサポートしている場合、戻り値null
は、以前にマップでキーとnull
が関連付けられていたことを示す場合もある。)UnsupportedOperationException
- put
操作がこのマップでサポートされない場合(オプション)ClassCastException
- 指定されたキーまたは値のクラスが、それらがこのマップに格納されるのを妨げる場合(オプション)NullPointerException
- このマップがnullキーやnull値を許可しないときに、指定されたキーまたは値がnullの場合IllegalArgumentException
- 指定されたキーまたは値のあるプロパティが原因で、このマップにそれらを格納できない場合default V computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)
null
にマップされている)場合、指定されたマッピング関数を使用してその値の計算を試行し、null
でない場合はそれをこのマップに入力します。
関数がnull
を返した場合、マッピングは記録されません。関数自体が(非チェック)例外をスローした場合、その例外は再スローされ、マッピングは記録されません。もっとも一般的な用途は、次のように初期のマップされた値またはメモ化された結果として機能する新しいオブジェクトを構築することです。
map.computeIfAbsent(key, k -> new Value(f(k)));
または、1つのキーで複数の値をサポートする複数値マップMap<K,Collection<V>>
を実装することです。
map.computeIfAbsent(key, k -> new HashSet<V>()).add(v);
map
の次のステップと同等であり、その後現在の値を返します。存在しない場合はnull
を返します。
if (map.get(key) == null) {
V newValue = mappingFunction.apply(key);
if (newValue != null)
map.put(key, newValue);
}
デフォルト実装は、このメソッドの同期または原子性プロパティに関してなにも保証しません。原子性保証を提供するすべての実装は、このメソッドをオーバーライドし、その並行性プロパティをドキュメント化する必要があります。特に、サブインタフェースConcurrentMap
のすべての実装は、値が存在しない場合にのみこの関数が原子的に1回適用されるかどうかをドキュメント化する必要があります。
key
- 指定された値が関連付けられるキーmappingFunction
- 値を計算するための関数NullPointerException
- 指定されたキーがnullであり、このマップがnullキーをサポートしない場合、またはmappingFunctionがnullである場合UnsupportedOperationException
- put
操作がこのマップでサポートされない場合(オプション)ClassCastException
- 指定されたキーまたは値のクラスが、それらがこのマップに格納されるのを妨げる場合(オプション)default V computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
関数がnull
を返した場合、マッピングは削除されます。関数自体が(非チェック)例外をスローした場合、その例外は再スローされ、現在のマッピングは変更されません。
map
に対して以下のステップを実行してから現在の値(今は存在しない場合はnull
)を返すことと同等です。
if (map.get(key) != null) {
V oldValue = map.get(key);
V newValue = remappingFunction.apply(key, oldValue);
if (newValue != null)
map.put(key, newValue);
else
map.remove(key);
}
デフォルト実装は、このメソッドの同期または原子性プロパティに関してなにも保証しません。原子性保証を提供するすべての実装は、このメソッドをオーバーライドし、その並行性プロパティをドキュメント化する必要があります。特に、サブインタフェースConcurrentMap
のすべての実装は、値が存在しない場合にのみこの関数が原子的に1回適用されるかどうかをドキュメント化する必要があります。
key
- 指定された値が関連付けられるキーremappingFunction
- 値を計算するための関数NullPointerException
- 指定されたキーがnullであり、このマップがnullキーをサポートしない場合、またはremappingFunctionがnullである場合UnsupportedOperationException
- put
操作がこのマップでサポートされない場合(オプション)ClassCastException
- 指定されたキーまたは値のクラスが、それらがこのマップに格納されるのを妨げる場合(オプション)default V compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
null
)。たとえば、次のように、値のマッピングにString
msgを作成または追加します。
map.compute(key, (k, v) -> (v == null) ? msg : v.concat(msg))
(このような目的で使用するmerge()
メソッドは、多くの場合、より単純です。)
関数がnull
を返した場合、マッピングは削除されます(最初から存在しない場合は、存在しないままです)。関数自体が(非チェック)例外をスローした場合、その例外は再スローされ、現在のマッピングは変更されません。
map
の次のステップの実行と同等であり、その後現在の値を返します。存在しない場合はnull
を返します。
V oldValue = map.get(key);
V newValue = remappingFunction.apply(key, oldValue);
if (oldValue != null ) {
if (newValue != null)
map.put(key, newValue);
else
map.remove(key);
} else {
if (newValue != null)
map.put(key, newValue);
else
return null;
}
デフォルト実装は、このメソッドの同期または原子性プロパティに関してなにも保証しません。原子性保証を提供するすべての実装は、このメソッドをオーバーライドし、その並行性プロパティをドキュメント化する必要があります。特に、サブインタフェースConcurrentMap
のすべての実装は、値が存在しない場合にのみこの関数が原子的に1回適用されるかどうかをドキュメント化する必要があります。
key
- 指定された値が関連付けられるキーremappingFunction
- 値を計算するための関数NullPointerException
- 指定されたキーがnullであり、このマップがnullキーをサポートしない場合、またはremappingFunctionがnullである場合UnsupportedOperationException
- put
操作がこのマップでサポートされない場合(オプション)ClassCastException
- 指定されたキーまたは値のクラスが、それらがこのマップに格納されるのを妨げる場合(オプション)default V merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction)
null
の場合は削除します。このメソッドは、1つのキーに対する複数のマップされた値を結合するときに使用できます。たとえば、次のように、値のマッピングにString msg
を作成または追加します。
map.merge(key, msg, String::concat)
関数がnull
を返した場合、マッピングは削除されます。関数自体が(非チェック)例外をスローした場合、その例外は再スローされ、現在のマッピングは変更されません。
map
の次のステップの実行と同等であり、その後現在の値を返します。存在しない場合はnull
を返します。
V oldValue = map.get(key);
V newValue = (oldValue == null) ? value :
remappingFunction.apply(oldValue, value);
if (newValue == null)
map.remove(key);
else
map.put(key, newValue);
デフォルト実装は、このメソッドの同期または原子性プロパティに関してなにも保証しません。原子性保証を提供するすべての実装は、このメソッドをオーバーライドし、その並行性プロパティをドキュメント化する必要があります。特に、サブインタフェースConcurrentMap
のすべての実装は、値が存在しない場合にのみこの関数が原子的に1回適用されるかどうかをドキュメント化する必要があります。
key
- 結果値が関連付けられるキーvalue
- キーに関連付けられた既存の値にマージされるnull以外の値。既存の値がない場合、またはキーにnull値が関連付けられている場合は、キーに関連付けられるnull以外の値remappingFunction
- 値が存在する場合に値を再計算するための関数UnsupportedOperationException
- put
操作がこのマップでサポートされない場合(オプション)ClassCastException
- 指定されたキーまたは値のクラスが、それらがこのマップに格納されるのを妨げる場合(オプション)NullPointerException
- 指定されたキーがnullであり、このマップがnullキーをサポートしない場合、あるいは値またはremappingFunctionがnullである場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2020, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。