K
- typ klíče mapyV
- typ hodnoty mapypublic class BidirectionalMap<K,V>
extends java.lang.Object
HashMap
), pro porovnání hodnot je to hash/== (viz
IdentityHashMap
). Tato mapa podporuje i iterátory klíčů a hodnot a
také jejich read-only kolekce. Klíč ani hodnota však nesmějí být
null
.Constructor and Description |
---|
BidirectionalMap() |
Modifier and Type | Method and Description |
---|---|
V |
ensure(K key,
java.util.function.Supplier<V> value)
Zajistí přítomnost vztahu určeného poskytnutým klíčem.
|
K |
getKey(V value)
Hledá klíč k hodnotě.
|
V |
getValue(K key)
Hledá hodnotu ke klíči.
|
java.util.Collection<K> |
keys()
Poskytne neměnitelnou kolekci klíčů.
|
void |
put(K key,
V value)
Vloží do kolekce vztah klíč->hodnota.
|
void |
removeKey(K key)
Odstraní klíč a připojenou hodnotu z kolekce.
|
void |
removeValue(V value)
Odstraní hodnotu a připojeným klíčem z kolekce.
|
java.util.Collection<V> |
values()
Poskytne neměnitelnou kolekci hodnot.
|
public void put(K key, V value)
Pokud v kolekci už takový klíč byl (čili existuje takové K k
, pro
které je pravdivý výraz k.equals(key)
), je předchozí vztah z
kolekce odstraněn (včetně zpětné vazby hodnota->klíč).
Podobně, pokud existuje taková hodnota (tedy {code V v}, pro které je
pravdivý výraz v == value
) je i tento předchozí vztah odstraněn
(včetně příslušného klíče).
To je důležitý rozdíl mezi touto a jinými mapami. Přidáním vztahu se obvykle buď zachová počet záznamů v mapě (protože klíč už existoval) nebo zvýší o (tento) jeden vztah. V této mapě však může dojít i ke snížení počtu, to kdyby i klíč i hodnota v kolekci již existovaly a nebyly spojeny mezi sebou (v takovém případě se odstraní dva staré vztahy a jeden nový vloží).
key
- klíč vkládaného vztahu (duplicita je vyloučena pomocí
objektové ekvivalence)value
- hodnota vkládaného vztahu (duplicita je vyloučena pomocí
referenční ekvivalence)public V ensure(K key, java.util.function.Supplier<V> value)
key
- klíč vztahuvalue
- dodavatel hodnoty v případě, že klíč dosud nebyl nalezenpublic V getValue(K key)
null
.key
- klíč, pro nějž se hledá hodnotanull
, pokud nebyl klíč nalezen, nebo příslušnou hodnotupublic K getKey(V value)
null
.value
- hodnota, pro níž se hledá klíčnull
, pokud nebyla hodnota nalezena, nebo příslušný klíčpublic void removeKey(K key)
key
- klíč z odstraňovaného vztahupublic void removeValue(V value)
value
- hodnota z odstraňovaného vztahupublic java.util.Collection<K> keys()
public java.util.Collection<V> values()