java - Java 中的持久数据结构

标签 java data-structures immutability

有没有人知道在 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):

C#和Java极其冗长,因此这些文章中的代码相当吓人。我建议学习 OCaml、F# 或 Scala,并熟悉这些语言的不变性。掌握这项技术后,您将能够更轻松地将相同的编码风格应用于 Java。

关于java - Java 中的持久数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/734110/

相关文章:

java - 如何正确地将元素放入不可变二叉树中?

java - 通过 hibernate 连接到 MS sql

java - 最大堆未按预期工作

java - 异步任务中的运行时错误

dictionary - 嵌套字典 Golang 的麻烦

java - 数据结构推荐

reactjs - MobX 可变性与不变性

reference - 为什么我可以将不可变引用传递给 BufReader,而不是可变引用?

Java Stack - 修改堆栈中的最后一个元素

java - 如何在 Java 中以编程方式创建 XML 文档?