笔试之ArrayList、linkedlist、Vector区别; Hashmap与HashTable区别
ArrayList与linkedlist的区别:
二者都线程不安全.
ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
对于随机访问get和set,ArrayList优于LinkedList,因为LinkedList要移动指针。对于新增 和删除操作add(特指插入)和remove,LinkedList比较占优势,因为ArrayList要移动数据。
ArrayList与Vector的区别
Vector和ArrayList几乎是完全相同的
唯一的区别在于Vector是同步类(synchronized),属于强同步类。因此开销就比ArrayList要大,访问要慢。
Vector每次扩容请求其大小的2倍空间,而ArrayList是1.5倍。Vector还有一个子类Stack。
HashMap与HashTable的区别:
1、HashMap与HashTable都实现了Map接口。由于HashMap是非线性安全的,效率上就高于HashTable。 HashTable的方法是Synchronize。;在多个线程访问HashTable时,不需要自己来实现方法同步,而HashMap就要我们自己提供同步方法。
2、HashMap允许将null作为一个值,而HashTable不能
3、Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。