Class 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 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 null
        IllegalArgumentException - 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/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