ArrayList和HashMap是异步的,Vector和HashTable是同步的,因此Vector和HashTable是线程安全的,而 ArrayList和HashMap并非线程安全的。由于同步须要花费机器时间,因此Vector和HashTable的执行效率要低于 ArrayList和HashMap。java
List接口数组
List是有序的Collection,使用此接口可以精确的控制每一个元素插入的位置。用户可以使用索引(元素在List中的位置,相似于数组下标)来访问List中的元素,这相似于Java的数组。安全
Map接口异步
请注意,Map没有继承Collection接口,Map提供key到value的映射。一个Map中不能包含相同的key,每一个key只能映射一个 value。性能
HashMap是容许使用 null 值和 null 键的!Hashtable是不容许的!线程
HashSet : 为快速查找设计的Set。存入HashSet的对象必须定义hashCode()。设计
果说查找的话确定是HashMap的效率高些嘛,由于它是散列存储的,而ArrayList是顺序存储的code
执行效率是Map的一个大问题。看看get()要作哪些事,就会明白为何在ArrayList中搜索“键”是至关慢的。而这正是HashMap提升速度的地方。HashMap使用了特殊的值,称为“散列码”(hash code),来取代对键的缓慢搜索。“散列码”是“相对惟一”用以表明对象的int值,它是经过将该对象的某些信息进行转换而生成的。全部Java对象都能产生散列码,由于hashCode()是定义在基类Object中的方法。对象
HashMap就是使用对象的hashCode()进行快速查询的。此方法可以显着提升性能继承