在Java中,如何在初始化之后创建一个ArrayList
只读(以便无人添加元素,编辑或删除元素)?make ArrayList只读
44
A
回答
86
将ArrayList传递到Collections.unmodifiableList()。它返回指定列表的不可修改视图。只能使用这个返回的List,而不要使用原来的ArrayList。
0
2
将列表对象传递给Collections.unmodifiableList()。看下面的示例。
import java.util.*;
public class CollDemo
{
public static void main(String[] argv) throws Exception
{
List stuff = Arrays.asList(new String[] { "a", "b" });
List list = new ArrayList(stuff);
list = Collections.unmodifiableList(list);
Set set = new HashSet(stuff);
set = Collections.unmodifiableSet(set);
Map map = new HashMap();
map = Collections.unmodifiableMap(map);
System.out.println("Collection is read-only now.");
}
}
0
传递的集合对象到其等效不可修改的功能集合类 下面的代码演示使用unmodifiableList的
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Temp {
public static void main(String[] args) {
List<Integer> objList = new ArrayList<Integer>();
objList.add(4);
objList.add(5);
objList.add(6);
objList.add(7);
objList = Collections.unmodifiableList(objList);
System.out.println("List contents " + objList);
try {
objList.add(9);
} catch(UnsupportedOperationException e) {
e.printStackTrace();
System.out.println("Exception occured");
}
System.out.println("List contents " + objList);
}
}
同样的方式,你可以创建其他集合不可修改以及
- 集合.unmodifiableMap(地图);
- Collections.unmodifiableSet(set);
相关问题
- 1. Make文件只对程序
- 2. 阅读ArrayList元素
- 3. 阅读ArrayList索引
- 4. 保存并读取arraylist的arraylist类
- 5. make matplotlib draw()只显示新点
- 6. Make QListWidget只显示1个项目
- 7. ArrayList只存储两个值
- 8. ArrayList中只有反复
- 9. 将InputStream读取到Arraylist
- 10. 保存和读取的ArrayList
- 11. Jackson-jr阅读多态ArrayList
- 12. 使用jquery读取Asp.net arraylist
- 13. 在Talend阅读jsonpath into arraylist
- 14. 只读VS自动(只读)属性
- 15. SVN:只读/检出只读文件
- 16. Make Class Parcelable error
- 17. := VS在make宏=
- 18. 执行`make check`或`make test`
- 19. 阅读标签分隔文件到ArrayList <ArrayList>在Java
- 20. 只写只读字段
- 21. C#:如果多个线程只读取它,我必须使ArrayList同步
- 22. 只读R
- 23. CKEditor只读
- 24. 只读System.Xml.XmlElement
- 25. 只读列
- 26. 只读ATTRIB
- 27. 从只读
- 28. 表是“只读”
- 29. 只读下拉
- 30. 只读不AngularJs
“...并且只使用返回的列表,从来没有原始的'ArrayList'”是一个非常重要的添加!将'ArrayList'传递给该方法不会奇迹般地改变对象。它只返回一个不可修改的包装。 – 2010-03-10 18:11:25
@Joachim绍尔 - 伟大的一点! – 2010-03-10 18:23:40
有时候你想保留原来的'ArrayList'。这可能是暴露对象内封装的类似List的类视图的一种很好的技术。对该对象的修改将更新'List'视图,但视图本身不接受任何修改。 – Matthew 2010-03-10 19:38:24