Class Index<K,V>

java.lang.Object
net.kyori.adventure.util.Index<K,V>
Type Parameters:
K - the key type
V - the value type

public final class Index<K,V> extends Object
A bidirectional map in which keys and values must be unique.
Since:
4.0.0
  • Method Summary

    Modifier and Type
    Method
    Description
    static <K, V extends Enum<V>>
    Index<K,V>
    create(Class<V> type, Function<? super V, ? extends K> keyFunction)
    Creates an index map.
    static <K, V extends Enum<V>>
    Index<K,V>
    create(Class<V> type, Function<? super V, ? extends K> keyFunction, V... values)
    Creates an index map.
    static <K,V> Index<K,V>
    create(Function<? super V, ? extends K> keyFunction, List<V> constants)
    Creates an index map.
    static <K,V> Index<K,V>
    create(Function<? super V, ? extends K> keyFunction, V... values)
    Creates an index map.
    @Nullable K
    key(V value)
    Gets the key for a value.
    @Nullable K
    keyOr(V value, @Nullable K defaultKey)
    Gets a key by its value or returns a fallback key.
    keyOrThrow(V value)
    Gets the key for a value or throws an exception.
    Gets the keys.
    Get an unmodifiable mapping of index entries from key to value.
    @Nullable V
    value(K key)
    Gets a value by its key.
    @Nullable V
    valueOr(K key, @Nullable V defaultValue)
    Gets a value by its key or returns a fallback value.
    Gets a value by its key.
    Gets the keys.
    Get an unmodifiable mapping of index entries from value to key.

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • create

      public static <K, V extends Enum<V>> Index<K,V> create(Class<V> type, 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 public static <K, V extends Enum<V>> Index<K,V> create(Class<V> type, Function<? super V, ? extends K> keyFunction, V... 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 public static <K,V> Index<K,V> create(Function<? super V, ? extends K> keyFunction, V... 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

      public static <K,V> Index<K,V> create(Function<? super V, ? extends K> keyFunction, 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

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

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

      public K keyOrThrow(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 @Nullable K keyOr(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

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

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

      public V valueOrThrow(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 @Nullable V valueOr(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

      public 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

      public 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