ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,因此最大的缺点就是插入删除时很是麻烦
LinkedList 采用的将对象存放在独立的空间中,并且在每一个空间中还保存下一个连接的索引 可是缺点就是查找很是麻烦 要丛第一个索引开始
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参数。