• 软件测试技术
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘

字号: | 推荐给好友 上一篇 | 下一篇

进阶:Vector、ArrayList和List的异同

发布: 2008-5-09 10:48 | 作者: 不详 | 来源: 不详 | 查看: 78次 | 进入软件测试论坛讨论

领测软件测试网

AT7RO(Lo 软件测试技术网*bt%]?&zR4I } qC6t

软件测试技术网'r:a @:vFht
    Hashtable numbers = new Hashtable();软件测试技术网d$n\8\4t.l-V:E
    numbers.put(“one”, new Integer(1));
8OS;A&E}k4U    numbers.put(“two”, new Integer(2));
4_,p c[Y+ZE    numbers.put(“three”, new Integer(3));
,etM3Nw L0K)R/cE5[  要取出一个数,比如2,用相应的key:软件测试技术网/xE.k0?8T n i9G*D0u/|
    Integer n = (Integer)numbers.get(“two”);
Vx`s1~2aF$E vD lr    System.out.println(“two = ” + n);
? {1U\V&^  由于作为key的对象将通过计算其散列函数来确定与之对应的value的位置,因此任何作为key的对象都必须实现hashCode和equals方法。hashCode和equals方法继承自根类Object,如果你用自定义的类当作key的话,要相当小心,按照散列函数的定义,如果两个对象相同,即obj1.equals(obj2)=true,则它们的hashCode必须相同,但如果两个对象不同,则它们的hashCode不一定不同,如果两个不同对象的hashCode相同,这种现象称为冲突,冲突会导致操作哈希表的时间开销增大,所以尽量定义好的hashCode()方法,能加快哈希表的操作。
$en\ OM:f h;n  如果相同的对象有不同的hashCode,对哈希表的操作会出现意想不到的结果(期待的get方法返回null),要避免这种问题,只需要牢记一条:要同时复写equals方法和hashCode方法,而不要只写其中一个。软件测试技术网D6n*~%f u!m n jm
  Hashtable是同步的。软件测试技术网]1Z7uv{