Java的集合框架主要有三种:List、Set和Map,这三个都是接口,其中List和Set继承自Collection类,Map是一个独立的类。
常见的Java集合类继承关系如下:
- Collection<--List<--Vector<--Stack
- Collection<--List<--ArrayList
- Collection<--List<--LinkedList
- Collection<--Set<--HashSet<--LinkedHashSet
- Collection<--Set<--SortedSet<--TreeSetMap<--HahMap
- Map<--HashMap
- Map<--SortedMap<--TreeMap
三种常见Java集合框架的区别:
- List:一种有序的允许元素(单个元素)重复的Collection集合,用户可以基于索引快速访问其中的元素。
- Set:一种无序的不允许元素(单个元素)重复的Collection集合。
- Map:元素以键值对存储,用户可以根据键对象快速访问到元素,键对象不允许重复。
几种常见Java集合类的区别:
- Vector:元素单个存储,允许重复。是线程安全的。初始容量为10,当超出容量时,会以(1*当前容量)的速度增长。
- ArrayList:对应数据结构中的“线性表”。元素单个存储,允许重复,适合查找操作。非线程安全的(省去了线程安全的操作,所以效率更高)。初始容量为10,当超出容量时,会以(0.5*当前容量+1)的速度增长。
- LinkedList:对应数据结构中的“链表”。元素单个存储,允许重复,适合插入、删除等操作。
- HaspMap:元素以键值对存储,元素可为空,键对象不允许重复,非线程安全的(更高效)。
- HashTable:元素以键值对存储,元素不可为空,键对象不允许重复,是线程安全的。
最后,不得不提一下Java中很容易被新手忽略的两个帮助类:Arrays和Collections。
- Arrays用于操作数组,提供多种对数组元素的查找(如二分查找)、排序(如优化后的快排)等操作。
- Collections用于操作集合类,提供多种对集合元素的查找、排序等操作。
- 他们所提供的方法都是静态方法,可以通过类名直接调用。