集合接口有Collection和Map
list:
可以重复,通过使用索引取出或者加入数据,顺序和插入的顺序一致,可以含null元素
ArrayList:
底层数据结构是数组结构array,查询速度快,增删改慢,因为是以类似数组的形式进行储存,因此它的随机访问速度极快
Vector:
底层也是数组结构,查询速度快,增删改慢
ArrayList和Vector的区别:
1.数组长度:当集合中的元素数量大于当前集合数组的长度时,使用Vector
Vector的增长率是目前数组长度的100% 而ArrayList的增长率是目前数组长度的50%
2.线程同步:ArrayList是线程不同步,Vector线程同步,所以Vector线程安全,但是每个方法上都添加了 synchronized,所以效率会比ArrayList要慢
LinkedList:链表结构,对元素的增删速度快
set:
数据无序且唯一,实现类都不是线程安全的类, 解决方案:Set set = Conllection.synchronizedSet(Set对象)
HashSet:
是set最常用的类,底层是用哈希表算法,底层也是一个数组,查询的速度,插入的速度都比较快,适用于少量数据的插入操作,
判断两个对象是否相等:1.equals比较,2.ha'shCode值相同
要求:存在哈希表中的对象元素都要覆盖equals和hashCode方法
Map接口的特点是:
元素是成对出现的,以键和值的形式体现出来,键要保证唯一性;常用的类有:hashMap,Hashtable,TreeMap
hashMap:线程不安全的,允许存放null键null值
hashtable:线程安全的,不允许存放null键null值
TreeMap:可以对键进行排序
存入元素:
Colletion接口实现类是通过add方法完成,Map是通过put方法完成
取出元素
Collection接口:list接口有两种1.get(元素下标),2.通过Iterator迭代方法获取
set接口是通过迭代的方式获取元素
Map接口:先通过keySet获取键的系列,然后通过该系列使用Ietator迭代方式获取元素值