2

在我的应用程序中,我有大约 50Mb 的字符串,它们有很多共同的部分。我想通过使用 Radix Trie (Patricia Tree) 来减少内存消耗,例如。Apache 集合实现。

目标是保留对条目的引用并在需要时获取完整的字符串:

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. 如何将字符串放入 trie 并获取TrieEntry实例?由于它实现了java.util.mapput 方法返回值:

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

  2. 如何从TrieEntry实例中获取完整字符串?

在我的用例中,值(节点有效负载)是无用的,因为主要目标只是节省内存(没有任何有效负载)。

Apache 的 PatriciaTrie是否适合该用例?有什么想法吗?

4

0 回答 0