我正在寻找Java中不可变树形图的实现,它允许通过共享相同部分进行写时复制样式修改。所以,实质上就是ImmutableJS对JavaScript的作用,仅适用于Java。
如果有人碰巧不熟悉ImmutableJS的工作方式,那么我希望它能用于Java:
ImmutableTreeMap<String, String> map = new ImmutableTreeMap<>();
ImmutableTreeMap<String, String> map1 = map.put("hello", "world");
ImmutableTreeMap<String, String> map2 = map1.put("foo", "bar");
// the base maps should still remain the same
assertEquals(0, map.size());
assertEquals(1, map1.size());
在上面的示例中,map2
不会复制存储hello -> world
的树的部分,它会重复使用该部分。
是否有任何此类实施可用,或者我是否必须从头开始创建一个?
答案 0 :(得分:2)
你正在寻找一个持久的&#39;哈希映射,也称为&#39;哈希数组映射trie&#39;。
应该注意一棵树&#39;与&#39; trie&#39;并不是一回事。数据结构。
你会发现一些java HAMT,包括来自paguro,pcollections和javaslang项目的一些,或者你可以使用为jvm编译的clojure或scala中的规范