一、基本概念
集合是一个容器,只能用来存放引用数据类型,不定长会自动扩容,可以存储不同类型的引用数据。
从Java的层级结构来分:
Iterable --》Collection--》List--》Set--》Map
1、List集合
允许存储重复值,有序先进先出,可以存储null。
- ArrayList:基于数组实现,查询快,线程不安全;
- LinkedList:基于链表结构实现,新增修改删除快,线程不安全;
- Vector:基于数组实现,线程安全
2、Set集合
不允许出现重复值,无序,可以存储null。
- HashSet:无序;
- LinkedHashSet:有序;
- TreeSet:可以排序(自然排序),存储的类型必须实现了Comparable接口,并重写方法,否则会报异常。
3、Map集合
以键对值的方式来存储值,键不允许重复,值允许重复,内部维护一个接口Entry。
- HashTable: 线程安全,无论key还是value都不能为null;
- HashMap: 线程不安全,且无序,可以存储null键和null值;
- LinkedHashMap:线程不安全有序;
- TreeMap:和TreeSet一样能够实现自然排序,不过TreeMap的排序的是键值;
- ConcurrentHashMap:底层采用分段的数组+链表实现,线程安全,综合了HashTable和HashMap两者的优缺点,在实现线程安全的同时,又保证了执行效率。