在我的应用程序中,我有大约 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个问题:
如何将字符串放入 trie 并获取
TrieEntry
实例?由于它实现了java.util.map
,put
方法返回值:public V put(final K key, final V value)
如何从
TrieEntry
实例中获取完整字符串?
在我的用例中,值(节点有效负载)是无用的,因为主要目标只是节省内存(没有任何有效负载)。
Apache 的 PatriciaTrie是否适合该用例?有什么想法吗?