ArrayList 和List,HashMap和Hashtable的区别

ArrayList 和List,HashMap和Hashtable的区别
ArrayList: 使用大小可以按需动态增大的数组来实现IList接口的类,列表中的每个元素都是对象。List接口中的方法是很少的。

List:是类属类(Generic Class),实现的是强类型的(每个元素都在List类实例化时指定了类型)列表,可以通过索引存取元素,可以排序,提供了比较强大的方法集合。

Hashtable:这个类根据key的值计算hash值,依据hash值来组织key/value这样一对一对的数据。可用来做人名匹配到人的各种属性这样的对照表,key可以重复的。

HashMap:和Hashtable类似,但是key具有唯一性。可用来做例如身份证号匹配到人的各种属性这样的映射表。 1、数组:java arrays的元素个数不能下标越界,从很大程度上保证了java程序的安全性,而其他一些语言出现这一问题时常导致灾难性的后果。 array可以存放object和基本数据类型,但创建时必须指定数组的大小,并不能再改变。值得注意的是:当array中的某一元素存放的是objrct reference 时,java不会调用默认的构造函数,而是将其初值设为null,当然这跟java对各类型数据赋默认值的规则是一样的,对基本数据类型同样适用。2、vector:对比于array,当更多的元素被加入进来以至超出其容量时,vector的size会动态增长,而array容量是定死的。同时,vector在删除一些元素后,其所有下标大于被删除元素的元素都依次前移,并获得新下标比原来的小了)。注意:当调用vector的size()方法时,返回vector中实际元素的个数。 vector内部实际是以array实现的,也通过元素的整数索引来访问元素,但它只能存放java.lang.object对象,不能用于存放基本类型数据,比如要存放一个整数10,得用new integer(10)构造出一个integer包装类对象再放进去。当vector中的元素个数发生变化时, 其内部的array必须重新分配并进行拷贝,因此这是一点值得考虑的效率问题。 vetor同时也实现了list接口,所以也可以算作colletion了,只是它还特殊在:vector is synchronized。即vetor对象自身实现了同步机制。3、arraylist:实现了list接口,功能与vetor一样,只是没有同步机制,当然元素的访问方式为从list中继承而来,可存放任何类型的对象。4、hashmap:继承了map接口,实现用keys来存储和访问values,keys和values都可以为空,它与hashtable类的区别在于hashtable类的keys不能为null,并hashtable类有同步机制控制,而hashmap类没有。 在struts类库中实现了一个lablevaluebean,用lable(key)来存储和访问value,很方便。

你可能感兴趣的:(ArrayList 和List,HashMap和Hashtable的区别)