zw3*_*324 5 java 2d arraylist immutability wrapper
在我正在研究的项目中,我有一个2D ArrayList,它代表了一些数据:
private ArrayList<ArrayList<T>> data = null;
现在我需要将这个ArrayList返回给某个对象,以便让对象检查它,但不能修改它.
我在下面的帖子中发现2D ArrayList需要由不可修改的包装器单独包装,但它没有提到如何操作:
所以我的问题是:如何从现有的2D ArrayList返回不可变的2D ArrayList?此外,最快的方法是什么,因为实际数据可能很大?
感谢所有的投入!
使用Collections.unmodifiableList方法:
ArrayList<ArrayList<String>> source = new ArrayList<ArrayList<String>>();
List<ArrayList<String>> out = Collections.unmodifiableList(source);
Run Code Online (Sandbox Code Playgroud)
调用Collections.unmodifiableList集合source不会使每个嵌套列表不可修改。如果您希望所有嵌套列表不可修改,则需要在列表上递归地执行此操作。所以:
ArrayList<ArrayList<String>> source = new ArrayList<ArrayList<String>>();
List<List<String>> temp = new ArrayList<List<String>>();
for (ArrayList<String> list : source) {
temp.add(Collections.unmodifiableList(list));
}
List<List<String>> out = Collections.unmodifiableList(temp);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3226 次 |
| 最近记录: |