• array,vertor,arraylist,hashable,hashmap等几个易混淆的概念


    array,vertor,arraylist,hashable,hashmap等几个易混淆的概念
    2006-10-10 15:24

    小弟总结的数组等几个易混淆的概念,大部分结论搜索于网上,请大家来指正,补充:

    Array可以存放Object和基本数据类型,但创建时必须指定数组的大小,并不能再

    改变, //Array可以存放任意类型的数据
    Vertor是放的Object。
    Vertor一维,Hashmap/Hashtabe二维;
    Vertor/Arraylist用index作检索,Hashmap/Hashtabe用key作为检索;
    Hashmap,Arraylist不是同步的,意味着它们的速度更快;
    Hashtable,Vertor是同步的,适用于与线程有关时;
    Hashtale的key不能为null,Hashmap的key和values都可以为null;

    性能方面:
    通过索引访问和更新元素时,Vector和ArrayList的实现有着卓越的性能,因为不

    存在除范围检查之外的其他开销。插入元素和删除元素总是要进行数组复制。

    LinkedList的实质是个双向链表。ArrayList和Vector通常比LinkedList和同步封

    装之后的LinkedList有着更好的性能。

    Hashmap,Arraylist不是同步的,属于轻量级应用,性能上应该好些。

    ---------------------------------------------------------------------------------------------------------------------------

    Hashtable和HashMap类有三个重要的不同之处。第一个不同主要是历史原因。Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。

    也许最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。这就意味着,虽然你可以不用采取任何特殊的行为就可以在一个多线程的应用程序中用一个Hashtable,但你必须同样地为一个HashMap提供外同步。一个方便的方法就是利用Collections类的静态的synchronizedMap()方法,它创建一个线程安全的Map对象,并把它作为一个封装的对象来返回。这个对象的方法可以让你同步访问潜在的HashMap。这么做的结果就是当你不需要同步时,你不能切断Hashtable中的同步(比如在一个单线程的应用程序中),而且同步增加了很多处理费用。

    第三点不同是,只有HashMap可以让你将空值作为一个表的条目的key或value。HashMap中只有一条记录可以是一个空的key,但任意数量的条目可以是空的value。这就是说,如果在表中没有发现搜索键,或者如果发现了搜索键,但它是一个空的值,那么get()将返回null。如果有必要,用containKey()方法来区别这两种情况。

    一些资料建议,当需要同步时,用Hashtable,反之用HashMap。但是,因为在需要时,HashMap可以被同步,HashMap的功能比Hashtable的功能更多,而且它不是基于一个陈旧的类的,所以有人认为,在各种情况下,HashMap都优先于Hashtable。

    关于Properties
    有时侯,你可能想用一个hashtable来映射key的字符串到value的字符串。DOS、Windows和Unix中的环境字符串就有一些例子,如key的字符串PATH被映射到value的字符串C:\WINDOWS;C:\WINDOWS\SYSTEM。Hashtables是表示这些的一个简单的方法,但Java提供了另外一种方法。

    Java.util.Properties类是Hashtable的一个子类,设计用于String keys和values。Properties对象的用法同Hashtable的用法相象,但是类增加了两个节省时间的方法,你应该知道。

    Store()方法把一个Properties对象的内容以一种可读的形式保存到一个文件中。Load()方法正好相反,用来读取文件,并设定Properties对象来包含keys和values。

    注意,因为Properties扩展了Hashtable,你可以用超类的put()方法来添加不是String对象的keys和values。这是不可取的。另外,如果你将store()用于一个不包含String对象的Properties对象,store()将失败。作为put()和get()的替代,你应该用setProperty()和getProperty(),它们用String参数。

    好了,我希望你现在可以知道如何用hashtables来加速你的处理了。
  • 相关阅读:
    Chapter6 Commodity Forwards
    Chapter5 Prepaid Forwards
    个人作业5——软工个人总结
    软工网络15个人作业3
    软工网络15——结对编程
    软工网络15个人阅读作业2
    软工网络15个人阅读作业1 201521123080曾飞远
    Java课程设计 猜数游戏个人博客
    201521123080《Java程序设计》第14周学习总结
    201521123080《Java程序设计》第13周学习总结
  • 原文地址:https://www.cnblogs.com/smallfa/p/1339315.html
Copyright © 2020-2023  润新知