Package net.kyori.adventure.util
Class Index<K,V>
- java.lang.Object
-
- net.kyori.adventure.util.Index<K,V>
-
- Type Parameters:
K
- the key typeV
- 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 Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static <K,V>
@NotNull Index<K,V>create(@NotNull Function<? super V,? extends K> keyFunction, @NotNull List<V> constants)
Creates an index map.static <K,V>
@NotNull Index<K,V>create(@NotNull Function<? super V,? extends K> keyFunction, @NotNull V @NotNull ... values)
Creates an index map.static <K,V extends Enum<V>>
@NotNull Index<K,V>create(Class<V> type, @NotNull Function<? super V,? extends K> keyFunction)
Creates an index map.static <K,V extends Enum<V>>
@NotNull Index<K,V>create(Class<V> type, @NotNull Function<? super V,? extends K> keyFunction, @NotNull V @NotNull ... values)
Creates an index map.K
key(V value)
Gets the key for a value.K
keyOr(V value, K defaultKey)
Gets a key by its value or returns a fallback key.K
keyOrThrow(V value)
Gets the key for a value or throws an exception.@NotNull Set<K>
keys()
Gets the keys.@NotNull Map<K,V>
keyToValue()
Get an unmodifiable mapping of index entries from key to value.V
value(K key)
Gets a value by its key.V
valueOr(K key, V defaultValue)
Gets a value by its key or returns a fallback value.V
valueOrThrow(K key)
Gets a value by its key.@NotNull Set<V>
values()
Gets the keys.@NotNull Map<V,K>
valueToKey()
Get an unmodifiable mapping of index entries from value to key.
-
-
-
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 typeV
- the value type- Parameters:
type
- the value typekeyFunction
- 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 typeV
- the value type- Parameters:
type
- the value typekeyFunction
- the key functionvalues
- 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 typeV
- the value type- Parameters:
keyFunction
- the key functionvalues
- 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 typeV
- the value type- Parameters:
keyFunction
- the key functionconstants
- the constants- Returns:
- the key map
- 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 valuedefaultKey
- the fallback key- Returns:
- the key
- Since:
- 4.11.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 keydefaultValue
- 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
-
-