有没有人知道在 Java 中创建和使用持久数据结构的库或至少一些研究?我不是将持久性称为长期存储,而是将持久性称为不变性(参见 Wikipedia entry)。
我目前正在探索为持久结构建模 API 的不同方法。使用构建器似乎是一个有趣的解决方案:
// create persistent instance
Person p = Builder.create(Person.class)
.withName("Joe")
.withAddress(Builder.create(Address.class)
.withCity("paris")
.build())
.build();
// change persistent instance, i.e. create a new one
Person p2 = Builder.update(p).withName("Jack");
Person p3 = Builder.update(p)
.withAddress(Builder.update(p.address())
.withCity("Berlin")
.build)
.build();
但这仍然让人觉得有些陈词滥调。有什么想法吗?
最佳答案
构建器会使您的代码过于冗长而无法使用。实际上,我见过的几乎所有不可变数据结构都是通过构造函数传递状态的。就其值(value)而言,这里有一系列很好的文章,描述了 C# 中的不可变数据结构(应该很容易转换为 Java):
- Part 1: Kinds of Immutability
- Part 2: Simple Immutable Stack
- Part 3: Covariant Immutable Stack
- Part 4: Immutable Queue
- Part 5: Lolz! (为了完整性而包括在内)
- Part 6: Simple Binary Tree
- Part 7: More on Binary Trees
- Part 8: Even More on Binary Trees
- Part 9: AVL Tree Implementation
- Part 10: Double-ended Queue
- Part 11: Working Double-ended Queue Implementation
C#和Java极其冗长,因此这些文章中的代码相当吓人。我建议学习 OCaml、F# 或 Scala,并熟悉这些语言的不变性。掌握这项技术后,您将能够更轻松地将相同的编码风格应用于 Java。
关于java - Java 中的持久数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/734110/