Java 和函数式编程范例 - 如何使我的数组不可变

标签 java arrays collections functional-programming immutability

我正在尝试编写遵循函数式编程范式的代码,该范式非常虔诚地遵循不可变性,但我知道如何使我的数组更接近不可变的唯一方法是使用

List<Integer> items = Collections.unmodifiableList(Arrays.asList(0,1,2,3));

我不确定这是否会使数组不可变或只是不可修改。如果上面的命令不能使数组不可变,那会怎样呢?

最佳答案

  1. 除非通过反射,否则您不能改变底层数组(或 Arrays.asList 返回的列表)。但是,数组在这里并不真正相关;不要混淆数组和列表!

  2. 从 Java 9 开始,List.of(0, 1, 2, 3) 实现了同样的效果。

  3. 要进行产生新集合的操作,您必须通过 streams .您可能还想考虑第三方库,例如Guava (this link is to their immutable collections page) .或者更好 PCollections ,它仅提供不可变集合以及比 Guava 更实用的实现。

关于Java 和函数式编程范例 - 如何使我的数组不可变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58086240/

相关文章:

c# - WPF:将 Collection 与 Collection 绑定(bind)到带有组的 ListBox

java - 按类型将集合转换为数组

java - 如何将 reducer 类中的值添加到数组列表(Hadoop)中?

java - Spring jpa hibernate : read and write data in atomic way

java - 带有 UV 贴图的 OpenGL-ES 纹理加载问题

使用 Arrays.equals 比较两个 dto 的 java 字节数组

python - 使用乘法创建一个列表,但不让每个列表镜像

java - Apache Camel CXF 响应 202 而不是 200

java - 空指针异常, "Attempt to read from field on a null object reference"

Scala - 从多维数组中安全地获取元素