Package org.ethelred.util.collect
Class BiMap<A,B>
- java.lang.Object
-
- org.ethelred.util.collect.BiMap<A,B>
-
- Type Parameters:
A- Type of one of the keys/valuesB- Type of the other keys/values
public class BiMap<A,B> extends Object
A bidirectional mapping. Does not implement Map because I don't find that useful now. May not contain nulls or duplicate keys/values. Immutable.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classBiMap.Entry<A,B>
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static <A,B>
BiMap.Entry<A,B>entry(A a, B b)Construct an entry for building a BiMap.Optional<B>getByA(A key)Get the B value corresponding to the A key.Optional<A>getByB(B key)Get the A value corresponding to the B key.Set<A>keysA()Set<B>keysB()Map<A,B>mapByA()Map<B,A>mapByB()static <A,B>
BiMap<A,B>ofEntries(Iterable<BiMap.Entry<A,B>> entries)Construct a BiMap from given entries.static <A,B>
BiMap<A,B>ofEntries(Collection<BiMap.Entry<A,B>> entries)Construct a BiMap from given entries.static <A,B>
BiMap<A,B>ofEntries(BiMap.Entry<A,B>... entries)Construct a BiMap from given entries.intsize()static <A,B>
Collector<BiMap.Entry<A,B>,?,BiMap<A,B>>toBiMap()
-
-
-
Constructor Detail
-
BiMap
public BiMap(Map<A,B> map)
Construct a BiMap from the entries in map.- Parameters:
map- entries to use- Throws:
NullPointerException- when any key or value in map is nullIllegalArgumentException- when there are duplicate keys or values
-
-
Method Detail
-
size
public int size()
-
getByA
public Optional<B> getByA(A key)
Get the B value corresponding to the A key.- Parameters:
key- A key- Returns:
- Optional containing value, empty if not found
-
getByB
public Optional<A> getByB(B key)
Get the A value corresponding to the B key.- Parameters:
key- B key- Returns:
- Optional containing value, empty if not found
-
entry
public static <A,B> BiMap.Entry<A,B> entry(A a, B b)
Construct an entry for building a BiMap.- Type Parameters:
A- the type of the first key/valueB- the type of the second key/value- Parameters:
a- one of the keys/valuesb- the other key/value- Returns:
- an entry
-
ofEntries
public static <A,B> BiMap<A,B> ofEntries(Iterable<BiMap.Entry<A,B>> entries)
Construct a BiMap from given entries.- Parameters:
entries- entries to use- Throws:
IllegalArgumentException- when there are duplicate keys or values
-
ofEntries
public static <A,B> BiMap<A,B> ofEntries(Collection<BiMap.Entry<A,B>> entries)
Construct a BiMap from given entries.- Parameters:
entries- entries to use- Throws:
IllegalArgumentException- when there are duplicate keys or values
-
ofEntries
@SafeVarargs public static <A,B> BiMap<A,B> ofEntries(BiMap.Entry<A,B>... entries)
Construct a BiMap from given entries.- Parameters:
entries- entries to use- Throws:
IllegalArgumentException- when there are duplicate keys or values
-
toBiMap
public static <A,B> Collector<BiMap.Entry<A,B>,?,BiMap<A,B>> toBiMap()
- Type Parameters:
A- Type of one of the keys/valuesB- Type of the other keys/values- Returns:
- Collect a stream of Entry into a BiMap
-
-