Class Trie<K,V>

java.lang.Object
io.activej.inject.util.Trie<K,V>

public final class Trie<K,V> extends Object
Completely generic and abstract simple Java implementation of the prefixed tree (or trie) data structure.
  • Constructor Details

    • Trie

      public Trie(V payload, Map<K,Trie<K,V>> children)
  • Method Details

    • leaf

      public static <K, V> Trie<K,V> leaf(V value)
    • of

      public static <K, V> Trie<K,V> of(V payload, Map<K,Trie<K,V>> children)
    • get

      public V get()
    • getChildren

      public Map<K,Trie<K,V>> getChildren()
    • get

      public Trie<K,V> get(K key)
    • getOrDefault

      public Trie<K,V> getOrDefault(K key, V defaultValue)
    • computeIfAbsent

      public Trie<K,V> computeIfAbsent(K key, Function<K,V> f)
    • get

      @Nullable public @Nullable Trie<K,V> get(K[] path)
    • computeIfAbsent

      public Trie<K,V> computeIfAbsent(K[] path, Function<K,V> f)
    • addAll

      public void addAll(Trie<K,V> other, BiConsumer<V,V> merger)
    • map

      public <E> Trie<K,E> map(Function<? super V,? extends E> fn)
    • dfs

      public void dfs(K[] path, BiConsumer<K[],V> consumer)
    • dfs

      public void dfs(Consumer<V> consumer)
    • merge

      public static <K, V> Trie<K,V> merge(BiConsumer<V,V> merger, V rootPayload, Trie<K,V> first, Trie<K,V> second)
    • merge

      @SafeVarargs public static <K, V> Trie<K,V> merge(BiConsumer<V,V> merger, V rootPayload, Trie<K,V> first, Trie<K,V> second, Trie<K,V>... rest)
    • merge

      public static <K, V> Trie<K,V> merge(BiConsumer<V,V> merger, V rootPayload, Collection<Trie<K,V>> bindings)
    • merge

      public static <K, V> Trie<K,V> merge(BiConsumer<V,V> merger, V rootPayload, Stream<Trie<K,V>> bindings)
    • prettyPrint

      public String prettyPrint()
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object