java - Java 和函数式编程范式 - 如何使我的数组不可变
问题描述
我正在尝试编写遵循函数式编程范式的代码,该范式非常虔诚地遵循不变性,但我知道如何使我的数组更接近不可变的唯一方法是使用
List<Integer> items = Collections.unmodifiableList(Arrays.asList(0,1,2,3));
我不确定这是否使数组不可变或只是不可修改。如果上面的命令不能使数组不可变怎么办?
解决方案
Arrays.asList
除了反射之外,您不能改变底层数组(或返回的列表)。但是,数组在这里并不重要。不要混淆数组和列表!从 Java 9 开始,
List.of(0, 1, 2, 3)
实现了相同的功能。要执行生成新集合的操作,您必须通过流。您可能还需要考虑第三方库,例如Guava(此链接指向他们的不可变集合页面)。甚至更好的 PCollections,它只提供不可变集合和比 Guava 更多的功能实现。
推荐阅读
- scala - 计算 spark RDD 或 DataFrame 中列之间的分隔符并将行移动到单独的 RDD 或数据帧
- python - 如何跳过几行并在熊猫中读取为数据框?
- mongodb - Mongo DB - 尝试创建 AND 条件时出错
- rust - 在声明性宏中构建所有元素对(二次集)
- android - FAB 按钮单击上的自定义操作选择器
- ios - 使用 UIImagePickerController iOS 从画廊上传视频时视频大小发生变化?
- android - 如何在 Xamarin.Android 的 api vesrion 4.4 以下实现 ClipToOutLine?
- watson-discovery - Watson Discovery Box 连接过期凭据
- symfony - 令牌存储不包含身份验证令牌和denyAccessUnlessGranted()
- javascript - 2 画布使用 drawImage 使一个画布在另一个画布中居中