快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-07-04

驯服Tiger - 集合框架

时间:2010-12-16 John Zukowski

JDK 5.0 中最吸引人的地方在于集合框架的一些最突出的特性上,例如:支 持泛型的语言级别上的新变化,以及可以在 java.util.concurrent 包中找到的 并发集合工具包。实际上,以前在 developerWorks 上的“驯服 Tiger: 并发集 合”和“介绍 JDK 5.0 中的泛型”这两篇教程中介绍了上述特性。但是其他增 强还没有得到足够的重视。在本文中,我将研究其他三个变化:更新过的 Arrays 和 Collections 类、新的 Queue 接口以及它的 PriorityQueue 实现。

数组(Array)

Arrays 类提供了一系列处理数组的静态工具方法,这些索引的数据结构的大 小是固定的。在 5.0 版本之前,Arrays 类拥有针对原始数据库类型和通用 Object 类型的每种不同数组类型的 binarySearch()、equals()、fill() 和 sort() 方法。用于将 Object 数组转换成 List 的附加 asList() 方法仍然有 用。Tiger 为所有数组添加了 hashCode() 和 toString() 方法,还添加了特定 于 Object 数组的 deepEquals()、deepHashCode() 和 deepToString() 方法。 总计有 21 个新方法可用:

public static boolean deepEquals(Object[] a1, Object[] a2)

public static int deepHashCode(Object[] a)

public static String deepToString(Object[] a)

public static int hashCode(boolean[] a)

public static int hashCode(byte[] a)

public static int hashCode(char[] a)

public static int hashCode(double[] a)

public static int hashCode(float[] a)

public static int hashCode(int[] a)

public static int hashCode(long[] a)

public static int hashCode(Object[] a)

public static int hashCode(short[] a)

public static String toString(boolean[] a)

public static String toString(byte[] a)

public static String toString(char[] a)

public static String toString(double[] a)

public static String toString(float[] a)

public static String toString(int[] a)

public static String toString(long[] a)

public static String toString(Object[] a)

public static String toString(short[] a)

驯服Tiger - 集合框架(2)

时间:2010-12-16 John Zukowski

自从集合框架初次出现在 J2SE 1.2 中以来,人们第一次对实用工具类进行 了更改。我无法确定为什么 Sun 要等这么久才进行更改,但是对于可用的帮助 器方法系列来说,这些更改是受欢迎的添加。

新添加的第一个方法是 hashCode()。对于任意数组类型,都可以调用 Arrays.hashCode(arrayVar) 方法来获得格式良好的哈希码。这个哈希码可以用 作 HashMap 或者其他相关目的的键。如果您不知道如何生成良好的哈希码,那 么最好使用 Arrays 类,它能产生更少冲突。Arrays 类生成等价于拥有相同元 素的 List 的代码。

在创建自己的类时,既需要提供 equals() 方法,又需要提供 hashCode() 方法。在 Arrays 的新方法 hashCode() 的帮助下,可以为任何本地数组类型生 成哈希码,而不用在每次需要它的时候折腾您自己。

所有数组类型都可用的另一个方法是 toString()。对于任何数组类型,都可 以调用 Arrays.toString(arrayVar) 获得逗号分隔的元素列表,列表用方括号 包围,如清单 1 的程序所示:

清单 1. 用 Arrays.toString 生成字符串

import java.util.Arrays; public class ArgsToString {   public static void main(String args[]) {    System.out.println(Arrays.toString(args));   } }

清单 2 显示了结果:

清单 2. 清单 1 的结果

>java ArgsToString One Two Three   [One, Two, Three]

新的 deepEq

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