Class BiMap<A,B>

java.lang.Object
org.ethelred.util.collect.BiMap<A,B>
Type Parameters:
A - Type of one of the keys/values
B - 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.
  • Constructor Details

    • 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 null
      IllegalArgumentException - when there are duplicate keys or values
  • Method Details

    • 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/value
      B - the type of the second key/value
      Parameters:
      a - one of the keys/values
      b - 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
    • mapByA

      public Map<A,B> mapByA()
      Returns:
      An unmodifiable view of the mapping from A keys
    • mapByB

      public Map<B,A> mapByB()
      Returns:
      An unmodifiable view of the mapping from B keys
    • keysA

      public Set<A> keysA()
      Returns:
      An unmodifiable view of the set of A keys
    • keysB

      public Set<B> keysB()
      Returns:
      An unmodifiable view of the set of B keys
    • toBiMap

      public static <A, B> Collector<BiMap.Entry<A,B>,?,BiMap<A,B>> toBiMap()
      Type Parameters:
      A - Type of one of the keys/values
      B - Type of the other keys/values
      Returns:
      Collect a stream of Entry into a BiMap