ArrayList与LinkedList 以及 Hashtable与HashMap之间的区别

来源:互联网 发布:淘宝客返利是什么 编辑:程序博客网 时间:2024/04/30 06:58
1、ArrayList与LinkedList :
ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦;LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引(类似C语言中的链表结构)但是缺点就是查找非常麻烦 要丛第一个索引开始2、Hashtable和HashMap类有三个重要的不同之处:
第一个不同主要是历史原因。Hashtable是基于陈旧的Dictionary类,HashMap是Java 1.2引进的Map接口的一个实现。
public class Hashtable<K,V> extends Dictionary<K,V>public class HashMap<K,V> extends AbstractMap<K,V>
第二个不同是Hashtable的方法是同步的,而HashMap的方法不是。这就意味着,你可以直接在一个多线程的应用程序中用一个Hashtable而不必担心它的同步问题,如果使用HashMap,那么你必须额外地提供外同步。一个方便的方法就是利用Collections类的静态的synchronizedMap()方法创建一个线程安全的Map对象
Map hashMap = Collections.synchronizedMap(new HashMap<String, String>());Hashtable hashtable = new Hashtable<String, String>();
并把它作为一个封装的对象来返回。这个对象的方法可以让你同步访问潜在的HashMap。 第三个不同是,只有HashMap可以让你将空值作为一个表的条目的key或value。HashMap中只有一条记录可以是一个空的key,但任意数量的条目可以是空的value。 
hashMap.put(null, null);hashtable.put(null, null); Error:java.lang.NullPointerException
0 0