java api之实现(下) - 编程入门网
以保持全面的存取。
就象同步包装器一样,6个核心对象集接口中的每一个接口都对应一个静态方法:
便利实现(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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |