ArrayList、LinkedList、Vector区别?
1、ArrayList
非线程安全的;
底层数据结构是数组Object[];
初始化容量是10,扩容到原容量的1.5倍;
检索效率比较高,向数组末尾添加元素效率高,随机增删元素效率低;
2、LinkedList
非线程安全的;
底层数据结构是双向链表;
检索效率低,随机增删效率高;
链表中元素的内存地址不连续;
3、Vector
线程安全的(Vector所有方法都有synchronized关键字修饰,效率较低);
底层数据结构是数组Object[];
初始化容量是10,扩容到原容量的2倍;
4、如何将ArrayList集合转换成线程安全的?
使用集合工具类java.util.Collections;区别于集合接口java.util.Collection;
List myList = new ArrayList();
Collections.synchronizedList(myList);//将myList变成线程安全的;
myList.add("111");//myList集合就是线程安全的了;
myList.add("222");