1 ArrayList和Vector的异同
相同点:
(1) 两者底层都是基于数组实现的,查询效率高,删除和插入效率低。
(2) 两者都实现了List接口,都是有序集合。
(3) 两者的迭代器实现都是fast-fail。
不同点:
(1) ArrayList是线程不安全的,效率高。Vector大部分方法都使用了synchronized关键字修改,是线程安全的,效率低。
(2) ArrayList扩容时扩大为原来的1.5倍,Vector扩容时如果初始化了capacityIncrement属性时,每次扩容大小就增加capacityIncrement,如果没有就默认扩容到原来的2倍。
2 ArrayList,Vector, LinkedList 的存储性能和特性。
ArrayList
ArrayList实现List接口,内部使用的是数据结构是数组,默认初始大小10。有序集合,增删效率低,查询效率高,线程不安全。
Vector
Vector实现List接口,内部使用的是数据结构是数组,默认初始大小10。有有序集合,大多方法都使用synchronized关键字修饰,线程安全,但是效率低。
LinkedList
LinkedList实现了List接口,内部使用的数据结构是双向链表。有序集合,增删效率高,查询效率低,线程不安全。
3 List、Set、Map三个接口,存取元素时,各有什么特点
List和Set都是单列集合,都实现了Collection接口,而Map是双列集合。
List是有序集合,存储顺序和遍历的顺序一致,Set和Map是无序集合,不能保证存取顺序一致。
存储
(1) List可以允许重复元素。
(2) Set不允许有重复元素。
(3) Map不允许有重复的key,但可以有重复的value。
取/遍历
(1) List有三种遍历方式:增强for循环、迭代器、以及get(int index)索引随机访问。
(2) Set集合遍历有迭代器迭代和增强for循环
(3) Map集合可以使用键获取值get(E key),可以获取key的集合,或获取value的集合,或者获取由key和value组合的Entry集合。
网友评论