List
继承自Collection接口,存放有序可可重复的对象,拥有一系列和索引相关的方法。查询速度快。List集合删除和修改数据时,伴随着后面数据的移动,所以插入和删除数据速度比较慢。
实现类
- ArrayList:适用于快速随机访问元素。
- LinkedList:底层基于链表实现,链表内存是散乱的,每个元素存储本身内存地址的同时,还存储下一个元素的地址,链表增删快,查找慢。插入和删除数据,不涉及重排数据。
- Vector:同步线程安全的。适用于设计堆栈、队列等操作。
Set
继承自Collection接口,存放无序不能重复的对象。元素放入顺序无序,但是元素在set集合中的位置由元素的hashcode决定。
实现类
- HashSet:实现了Set接口,仅存储对象,适用add()将元素放入set中。使用成员对象计算hashcode值。
- LinkedHashSet
Map
存储键值对,键不可以重复,值可以重复,根据键获取值。遍历map集合时先获得键的set集合,然后对set集合遍历得到对应的值。
实现类
- HashMap:非线程安全,允许键或值为空。hashmap的迭代器是fail-fast。hashmap实现了Map接口。使用put将元素放入map中。使用键对象计算hashcode值。put时调用键对象的hashcode()方法计算hashcode,然后找到bucket位置存储值对象。获取对象时,通过eques方法找到对应的键值对,返回值对象。使用链表解决碰撞问题。
- HahsTable:线程安全,在单线程模式下比hashmap要慢,不允许键或值为空,多个线程可以共享一个hashtable。hashtable的迭代器是enumrator
- LinkedHashMap