快速业务通道

驯服Tiger - 集合框架 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-07-04
uals()、deepHashCode() 和 deepToString() 方法的工作方式 类似于它们那些非深度(non-deep)的同类,但它们不仅会停下手来处理顶级数 组的每个元素,还会更深入地研究生成结果的多维数组。

虽然不是一个新方法,但 asList() 方法在 5.0 的工作方式有所不同。以前 ,这个方法接受 Object[] 数组作为它的参数。现在,因为 Tiger 的可变参数 列表特性,任何用逗号分隔的列表都可以接受,如清单 3 所示:

清单 3. Arrays.asList 的区别

import java.util.Arrays; public class AsList {   public static void main(String args[]) {    // Before    List before = Arrays.asList(args);    // After    List after = Arrays.asList("One", "Two", "Three");   } }

如果传递给命令行的元素不同,清单 3 中的两个示例没必要产生同样的结果 ,但是它确实展示了 Tiger 在语言级别上的变化如何扩展了 Arrays 原有的 asList() 方法。

集合

Arrays 用于处理不同集合的辅助类是 Collections 类。同样,这个类也不 是一个新类,但是该类的特性已经针对 5.0 作了扩展。现在有 13 个新方法:

checkedCollection()

checkedSet()

checkedSortedSet()

checkedList()

checkedMap()

checkedSortedMap()

emptySet()

emptyList()

emptyMap()

reverseOrder()

frequency()

disjoint()

addAll()

驯服Tiger - 集合框架(3)

时间:2010-12-16 John Zukowski

其中 6 个 checked*() 方法工作起来与 6 个 synchronized*() 和 unmodifiable*() 方法类似。使用 synchronized*() 方法时,要向该方法提供 一个集合,然后该方法将返回同一个集合的同步的、线程安全的版本。使用 unmodifiable*() 方法时,得到的是指定集合的只读视图。除了集合参数之外, checked*() 操作可能还要求第二个或者第三个参数(如清单 4 所示),并返回 该集合的动态的类型安全视图:

清单 4. 检测后的集合

public static <E> Collection<E> checkedCollection(    Collection<E> c, Class<E> type)   public static <E> Set<E> checkedSet(    Set<E> s, Class<E> type)   public static <E> SortedSet<E> checkedSortedSet(    SortedSet<E> s, Class<E> type)   public static <E> List<E> checkedList(    List<E> list, Class<E> type)   public static <K,V> Map<K,V> checkedMap(    Map<K,V> m, Class<K> keyType, Class<V> valueType)   public static <K,V> SortedMap<K,V> checkedSortedMap (    SortedMap<K,V> m, Class<K> keyType, Class<V> valueType)

使用 Java 5.0 平台,您可能以为:由于将集合声明为通用集合 (Collection<String> c = new HashSet<String>();),所以不 需要进行运行时检测了。但是如果向工具方法传递 String 版本的 HashSet,而 工具方法只能处理非通用的 Set,那么该方法可能就会错误地向集合添加一个非 String 元素。通过临时修改程序,用 Collection<String> c = Collections.checkedCollection(new HashSet<String>(), String.class); 添加运行时检查,您可以迅速发现问题的根源。

三个 empty*() 方法 —— emptySet()、emptyList() 和 emptyMap() —— 生成空的不可改变的集合。虽然也可以用 new ArraySet() 这样的方法创建空集 合,但是还要通过某个 unmodifiable*() 方法才能确保新集合是不可改变的。 empty 方法用更理想的方式提供了空的只读集合

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号