快速业务通道

java api之实现(下) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
以保持全面的存取。

就象同步包装器一样,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 个空元素。请看如下咒语:

List l = new ArrayList(Collections.nCopies(1000, null));

当然,每个元素的初始值不必是空。第二个主要用途是增长一个现存 List。例如,假设你要将串 fruit bat 的69个拷贝添加到一个 List 的末尾。不知道你为什么要这样做,我们只假设你是要这样做。下面是你应采用的做法:

lovablePets.addAll(Collections.nCopies(69, "fruit bat"));

通过使用 addAll(同时采用索引和一个 Collection作参数), 你可以将新的元素添加到一个 List 的中间,而不是末尾。

不可变单元素Set(Immutable Singleton Set)

有时你需要一个不可变的单元素 Set, 它由一个单一的特定元素所构成。Collections.singleton 方法可返回这样一个 Set。这个实现的一个用途是以下这个惯用程序所表达的,它从一个 Collection中删除了一个特定元素的所有具体值:

c.removeAll(Collections.singleton(e));

有一个相关的惯用程序,它从一个 Map 中删除映射一个特定值的所有元素。例如,假设你有一个称为 profession 的 Map ,他将人与他们所从事的工作相映射。假使你要删除所有的律师,下面的程序可以完成这件事:

profession.values().removeAll(Collections.singleton(LAWYER));

这个实现的另一个用途是为接受Collection的方法提供一个单一输入值。

空Set和空List常数

Collections 类提供两个常数,用以表示空 Set 和空 List, 它们是Collections.EMPTY_SET和Collections.EMPTY_LIST。不清楚这两个常数作为实现是否真的有资格,但本课程似乎是提及它们的最合适的地方。这两个常数的主要用途是在你不想提供任何值时,将它们传给需要Collection型参数的方法

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号