Class Index<K,​V>

  • Type Parameters:
    K - the key type
    V - the value type

    public final class Index<K,​V>
    extends Object
    A bi-directional map in which keys and values must be unique.
    Since:
    4.0.0
    • Method Detail

      • create

        @NotNull
        public static <K,​V extends Enum<V>> @NotNull Index<K,​V> create​(Class<V> type,
                                                                                   @NotNull
                                                                                   @NotNull Function<? super V,​? extends K> keyFunction)
        Creates an index map.
        Type Parameters:
        K - the key type
        V - the value type
        Parameters:
        type - the value type
        keyFunction - the key function
        Returns:
        the key map
        Since:
        4.0.0
      • create

        @SafeVarargs
        @NotNull
        public static <K,​V extends Enum<V>> @NotNull Index<K,​V> create​(Class<V> type,
                                                                                   @NotNull
                                                                                   @NotNull Function<? super V,​? extends K> keyFunction,
                                                                                   @NotNull
                                                                                   @NotNull V @NotNull ... values)
        Creates an index map.
        Type Parameters:
        K - the key type
        V - the value type
        Parameters:
        type - the value type
        keyFunction - the key function
        values - the values
        Returns:
        the key map
        Since:
        4.0.0
      • create

        @SafeVarargs
        @NotNull
        public static <K,​V> @NotNull Index<K,​V> create​(@NotNull
                                                                   @NotNull Function<? super V,​? extends K> keyFunction,
                                                                   @NotNull
                                                                   @NotNull V @NotNull ... values)
        Creates an index map.
        Type Parameters:
        K - the key type
        V - the value type
        Parameters:
        keyFunction - the key function
        values - the values
        Returns:
        the key map
        Since:
        4.0.0
      • create

        @NotNull
        public static <K,​V> @NotNull Index<K,​V> create​(@NotNull
                                                                   @NotNull Function<? super V,​? extends K> keyFunction,
                                                                   @NotNull
                                                                   @NotNull List<V> constants)
        Creates an index map.
        Type Parameters:
        K - the key type
        V - the value type
        Parameters:
        keyFunction - the key function
        constants - the constants
        Returns:
        the key map
        Since:
        4.0.0
      • keys

        @NotNull
        public @NotNull Set<K> keys()
        Gets the keys.
        Returns:
        the keys
        Since:
        4.0.0
      • key

        @Nullable
        public K key​(@NotNull
                     V value)
        Gets the key for a value.
        Parameters:
        value - the value
        Returns:
        the key
        Since:
        4.0.0
      • keyOrThrow

        @NotNull
        public K keyOrThrow​(@NotNull
                            V value)
        Gets the key for a value or throws an exception.
        Parameters:
        value - the value
        Returns:
        the key
        Throws:
        NoSuchElementException - if there is no key for the value
        Since:
        4.11.0
      • keyOr

        @Contract("_, null -> null; _, !null -> !null")
        public K keyOr​(@NotNull
                       V value,
                       @Nullable
                       K defaultKey)
        Gets a key by its value or returns a fallback key.
        Parameters:
        value - the value
        defaultKey - the fallback key
        Returns:
        the key
        Since:
        4.11.0
      • values

        @NotNull
        public @NotNull Set<V> values()
        Gets the keys.
        Returns:
        the keys
        Since:
        4.0.0
      • value

        @Nullable
        public V value​(@NotNull
                       K key)
        Gets a value by its key.
        Parameters:
        key - the key
        Returns:
        the value
        Since:
        4.0.0
      • valueOrThrow

        @NotNull
        public V valueOrThrow​(@NotNull
                              K key)
        Gets a value by its key.
        Parameters:
        key - the key
        Returns:
        the value
        Throws:
        NoSuchElementException - if there is no value for the key
        Since:
        4.11.0
      • valueOr

        @Contract("_, null -> null; _, !null -> !null")
        public V valueOr​(@NotNull
                         K key,
                         @Nullable
                         V defaultValue)
        Gets a value by its key or returns a fallback value.
        Parameters:
        key - the key
        defaultValue - the fallback value
        Returns:
        the value
        Since:
        4.11.0
      • keyToValue

        @NotNull
        public @NotNull Map<K,​V> keyToValue()
        Get an unmodifiable mapping of index entries from key to value.
        Returns:
        a mapping from key to value in the index
        Since:
        4.10.0
      • valueToKey

        @NotNull
        public @NotNull Map<V,​K> valueToKey()
        Get an unmodifiable mapping of index entries from value to key.
        Returns:
        a mapping from value to key in the index
        Since:
        4.10.0