除了Collections.unmodifiableList()以外,有哪些方法可以使arraylist只读?

时间:2015-07-29 16:05:10

标签: java collections

除了ArrayList之外,有哪些Collections.unmodifiableList()只读方式有哪些?

3 个答案:

答案 0 :(得分:1)

扩展数组列表类并重新实现更改列表的方法,以便不更改列表。

如果您提前知道价值,也可以将其作为最终结果。

你为什么要重新发明轮子?

答案 1 :(得分:1)

没有(实际)方法只能进行ArrayList读取。使用Collections.unmodifiableList进行换行会创建一个只读的新对象。原来的ArrayList仍然是可变的。

如果你想构建一个不可变的List,请使用guava' s ImmutableList

答案 2 :(得分:1)

最直接的方法是创建一个包装类,实现一个List但是明确地为修改列表的所有方法返回UnsupportedOperationException。你可以扩展AbstractList,以减少你的代码。

你将获得Collections.unmodifiableList将免费提供给你的克隆... Doc说:返回指定列表的不可修改的视图。此方法允许模块为用户提供对内部列表的“只读”访问。对返回列表的查询操作“读取”到指定列表,并尝试修改返回的列表,无论是直接还是通过其迭代器,都会导致UnsupportedOperationException ,但是测试较少,因此具有较高的静默错误风险

我的建议是:如果它存在,如果它符合您的要求,请使用它,不要重新发明它。