java api之实现(下)
http://tech.ddvip.com 2006年11月23日 社区交流
本文详细介绍java api之实现(下)
就象同步包装器一样,6个核心对象集接口中的每一个接口都对应一个静态方法:
public static Collection unmodifiableCollection(Collection c);
public static Set unmodifiableSet(Set s);
public static List unmodifiableList(List list);
public static Map unmodifiableMap(Map m);
public static SortedSet unmodifiableSortedSet(SortedSet s);
public static SortedMap unmodifiableSortedMap(SortedMap m);便利实现(Convenience Implementations)
这一节将描述几个小型实现。当你不需要一个通用实现的全部功能时,使用小型实现更方便,效率更高。这一节描述的所有实现都可通过静态方法获得,或者通过输出常数(不是公共类)来获得。
数组的List视图
Arrays.asList方法返回它的数组参数的一个 List视图。List 变化会写在数组上,反之亦然。 对象集 的大小就是数组的大小,且不能被改变。如果在该 List 上调用了 add 或 remove 方法,则回导致一个UnsupportedOperationException 。
正常地使用这个实现就象在基于数组的API和基于 对象集 的API之间架起了一座桥梁。 它允许你将一个数组传递给期望一个 Collection 或一个 List 的方法。然而,这个实现还有另一个用途。如果你需要一个定尺寸 List, 它将比任何通用 List 实现的效率都高。以下是一个惯用程序:
List l = Arrays.asList(new Object[size]);
注意对一个后备数组的引用是不保留的。
不可变多重-拷贝List(Immutable Multiple-Copy List) 偶尔你需要一个不可变的由相同元素的多个拷贝所组成的 List 。Collections.nCopies方法可返回这样的一个 List。这个实现有两个用途。一个是初始化一个新创建的 List。例如,假设你要初始化一个 ArrayList,使之包含 1000 个空元素。 请看如下咒语:
责编:豆豆技术应用