当前位置: 首页 > 面试题库 >

Java中的不可变数组

昝晗昱
2023-03-14
问题内容

有没有Java原始数组的不变选择?制作一个原始数组final实际上并不能阻止人们做类似的事情

final int[] array = new int[] {0, 1, 2, 3};
array[0] = 42;

我希望数组的元素不可更改。


问题答案:

不适用于原始数组。你将需要使用列表或其他数据结构:

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


 类似资料:
  • 问题内容: 通过遵循所有Java标准,我的班级变得一成不变 这些是我在定义不可变类时所做的主要检查点。 但是还有一个问题,我的对象仍然可以通过java反射进行修改,对吗?还是我在课堂上错过了任何一点? 提前致谢。 问题答案: 没有什么可以躲藏的-即使是不可变的类也不能幸免。但是,您对此无能为力,因此“无法通过反射进行修改”不是不变性的标准之一。

  • 问题内容: 在有效Java中,Bloch建议使所有字段最终成为使对象不变的对象。 是否有必要这样做?不只是不提供访问器方法就使其不可变。 例如 上述类是不可变的,即使我不申报的吗?我想念什么吗? 问题答案: 除了@Bozho的要点之外,将字段声明为意味着可以安全地访问它而无需任何同步。 相反,如果该字段不是,则存在另一个风险,即如果另一个线程在没有适当同步的情况下访问该字段,则另一个线程将看到该字

  • 问题内容: 有没有办法更好地做到上述几点?我希望它能够创建任意数量的维数组,也… 问题答案: 我只会使用平面一维数组和基于维度i和j的索引。

  • 本文向大家介绍Java中的不可变字符串,包括了Java中的不可变字符串的使用技巧和注意事项,需要的朋友参考一下 在Java中,不可变对象是指那些不能更改或修改(一旦修改)数据的对象。字符串类是不可变的,即一旦我们创建了一个字符串对象,就无法修改其数据。

  • 问题内容: 有没有简单的方法来创建不可变的NumPy数组? 如果必须从中派生一个类来执行此操作,那么为实现不变性而必须重写的最少方法集是什么? 问题答案: 您可以使numpy数组不可写: 另请参见此线程中的讨论: http://mail.scipy.org/pipermail/numpy- discussion/2008-December/039274.html 和文档: http://docs.

  • 看这个问题:如何在Java8中动态做过滤? 问题是在执行过滤器后截断流。我不能使用限制,因为我不知道过滤后的列表有多长。那么,我们可以计算过滤后的元素数吗? 所以,我想我可以创建一个类,计算并通过地图传递流。代码在这个答案中。 我创建了一个可计数的类,但保持元素不变,我在这里使用了一个函数,以避免使用我在另一个答案中使用的lambdas: 所以我的流最终是: 但我的问题是关于我的例子的另一部分。