Set:元素无序,不可重复,非线程安全
- HashSet(常用):使用hashcode()方法和equal()方法比较元素大小,两个方法结果只要有一个不同都可插入元素。
- TreeSet:采用红黑树的数据结构存储元素,默认使用自然排序(要求加入其中的元素实现Comparable接口的compareTo()方法)。
- LinkedHashSet:采用链表的结构按插入顺序排列元素。
List:元素有序,可重复
- ArrayList(常用):非线程安全。底层采用Object数组存储,随机访问速度快。
- LinkedList:以链表来存储,插入,删除操作较快。遍历时使用Iterator效率较高。
- Vector(过时):线程安全
Map:以键值对方式存储,key值不可重复,value可重复
- HashMap(常用):非线程安全,key值可以为null。保证key值不重复也是通过比较key值的hashcode()和equal方法
- Hashtable(少用):线程安全,key和value都不可为null
- TreeMap:采用红黑树结构根据key值有序存储,速度较慢。
补充:
- HashMap、HashSet中有关性能的一些参数
容量(capacity):hash表的大小
初始化容量(initial capacity):创建时的容量
尺寸(size):当前hash表中的记录数量
负载因子(load factor):大小为”size / capacity“ - 使用Collections工具类中的synchornizedXxx()方法可以解决一些集合的线程不同步问题。