视图:保持对原集合的控制。只用来展示集合中的元素。
视图是不可修改的,任何改变视图 size 的操作都会影响到原集合。抛出异常。
1 轻量级集包装器
1.1 Arrays.asList 方法
Arrays.asList 方法返回一个包装了普通 Java 数组的 List 包装器,一个视图对象。
1.2 Collecitons.nCopies 方法
Collections.nCopies(n,anObject) 返回一个实现了 List 接口的不可修改的对象,一个视图对象。
给人一种包含 n 个元素,每个元素都像是一个 anObject 的错觉。
1.3 Collections.singleton 方法
Collections.singleton(Object obj) 返回一个视图对象,该对象实现了 set 接口。
该方法的好处是返回的对象实现了一个不可修改的单元素集,而不需要付出建立数据结构的开销。
singletonList 和 singletonMap 方法类似。
2 子范围
subList 建立左闭右开的子范围视图,对该子范围的任何操作将会影响到整个列表中!
subSet、subMap 等方法类似。
3 不可修改的视图
Collections 的某些方法用于产生集合的不可修改视图。
如果修改视图,就会抛出异常。可以修改原始集合。
unmodifiableCollection();
unmodifiableList();
unmodifiableSet();
unmodifiableSortedSet();
unmodifiableMap();
unmodifiableSortedMap();
4 同步视图
Java中,利用视图机制保证常规集合的线程安全,而不是实现线程安全的集合。
Collections.synchronized***() 方法可对任何集合装换成具有同步访问方法的集合。
5 被检查视图
包装一个具有检查类型机制的视图,对泛型类型插入时就进行检测。
Collections.checkedList();