Как получить доступ к ключу Apache PatriciaTrie TrieEntry? - PullRequest
0 голосов
/ 07 февраля 2019

В моем приложении у меня есть около 50 Мб строк, которые имеют много общих частей.Я хотел бы уменьшить потребление памяти, используя Radix Trie (Patricia Tree), например.Коллекция Apache impl.

Цель состоит в том, чтобы сохранять ссылки на записи и получать полные строки, когда они необходимы:

val trie = PatriciaTrie()
val node1 = trie.put("Long string #1", null) // what's the method to add and return TrieEntry?
someObject1.setNode(node1)
val node2 = trie.put("Long string #2", null)
someObject2.setNode(node2)
val node3 = trie.put("Long string #3", null)
someObject3.setNode(node3)

Поэтому я ожидаю, что он будет храниться в памяти следующим образом:

 root
  \
   "Long string #"
                 \"1"
                 \"2"
                 \"3"

Когда это необходимо, я смогу получить полную строку (в someObjectN):

 val fullString = node.getKey(); // How can i do it?

Есть 2 вопроса:

  1. КакМогу ли я положить строку в три и получить экземпляр TrieEntry?Так как он реализует java.util.map, put метод возвращает значение:

    public V put(final K key, final V value)

  2. Как я могу получить полную строку из TrieEntry instance?

Значения (полезная нагрузка на узел) в моем случае бесполезны, поскольку основная цель - просто сохранить память (без какой-либо полезной нагрузки).

Is Apache'sPatriciaTrie подходит для этого случая использования вообще?Есть мысли?

...