org.apache.cassandra.utils

## Class BiMultiValMap<K,V>

- java.lang.Object
- - org.apache.cassandra.utils.BiMultiValMap<K,V>

Type Parameters:
  `K` -
  `V` -

All Implemented Interfaces:
  java.util.Map<K,V>

Direct Known Subclasses:
  SortedBiMultiValMap

    public class BiMultiValMap<K,V>
    extends java.lang.Object
    implements java.util.Map<K,V>

A variant of BiMap which does not enforce uniqueness of values. This means the inverse is a Multimap. (But the "forward" view is not a multimap; keys may only each have one value.)

### Nested Class Summary

### Nested classes/interfaces inherited from interface java.util.Map

`java.util.Map.Entry<K,V>`

### Field Summary

Fields
`protected java.util.Map<K,V>` `forwardMap`
`protected com.google.common.collect.Multimap<V,K>` `reverseMap`

### Constructor Summary

Constructors
`` `BiMultiValMap()`
`` `BiMultiValMap(BiMultiValMap<K,V> map)`
`protected` `BiMultiValMap(java.util.Map<K,V> forwardMap, com.google.common.collect.Multimap<V,K> reverseMap)`

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `clear()`
`boolean` `containsKey(java.lang.Object key)`
`boolean` `containsValue(java.lang.Object value)`
`java.util.Set<java.util.Map.Entry<K,V>>` `entrySet()`
`V` `get(java.lang.Object key)`
`com.google.common.collect.Multimap<V,K>` `inverse()`
`boolean` `isEmpty()`
`java.util.Set<K>` `keySet()`
`V` `put(K key, V value)`
`void` `putAll(java.util.Map<? extends K,? extends V> m)`
`V` `remove(java.lang.Object key)`
`java.util.Collection<K>` `removeValue(V value)`
`int` `size()`
`java.util.Collection<V>` `values()`
`java.util.Collection<V>` `valueSet()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface java.util.Map

`compute, computeIfAbsent, computeIfPresent, equals, forEach, getOrDefault, hashCode, merge, putIfAbsent, remove, replace, replace, replaceAll`

### Field Detail

#### forwardMap

    protected final java.util.Map<K,V> forwardMap

#### reverseMap

    protected final com.google.common.collect.Multimap<V,K> reverseMap

### Constructor Detail

#### BiMultiValMap

    public BiMultiValMap()

#### BiMultiValMap

    protected BiMultiValMap(java.util.Map<K,V> forwardMap,
                            com.google.common.collect.Multimap<V,K> reverseMap)

#### BiMultiValMap

    public BiMultiValMap(BiMultiValMap<K,V> map)

### Method Detail

#### inverse

    public com.google.common.collect.Multimap<V,K> inverse()

#### clear

    public void clear()

Specified by:
  `clear` in interface `java.util.Map<K,V>`

#### containsKey

    public boolean containsKey(java.lang.Object key)

Specified by:
  `containsKey` in interface `java.util.Map<K,V>`

#### containsValue

    public boolean containsValue(java.lang.Object value)

Specified by:
  `containsValue` in interface `java.util.Map<K,V>`

#### entrySet

    public java.util.Set<java.util.Map.Entry<K,V>> entrySet()

Specified by:
  `entrySet` in interface `java.util.Map<K,V>`

#### get

    public V get(java.lang.Object key)

Specified by:
  `get` in interface `java.util.Map<K,V>`

#### isEmpty

    public boolean isEmpty()

Specified by:
  `isEmpty` in interface `java.util.Map<K,V>`

#### keySet

    public java.util.Set<K> keySet()

Specified by:
  `keySet` in interface `java.util.Map<K,V>`

#### put

    public V put(K key,
                 V value)

Specified by:
  `put` in interface `java.util.Map<K,V>`

#### putAll

    public void putAll(java.util.Map<? extends K,? extends V> m)

Specified by:
  `putAll` in interface `java.util.Map<K,V>`

#### remove

    public V remove(java.lang.Object key)

Specified by:
  `remove` in interface `java.util.Map<K,V>`

#### removeValue

    public java.util.Collection<K> removeValue(V value)

#### size

    public int size()

Specified by:
  `size` in interface `java.util.Map<K,V>`

#### values

    public java.util.Collection<V> values()

Specified by:
  `values` in interface `java.util.Map<K,V>`

#### valueSet

    public java.util.Collection<V> valueSet()