【以下内容并非原创,来自网络搜集整理】
一、Java的集合结构
Java中的集合包含多种数据结构,如链表、队列、哈希表等。从类的继承结构来说,可以分为两大类,一类是继承自Collection接口,这类集合包含List、Set和Queue等集合类。另一类是继承自Map接口,这主要包含了哈希表相关的集合类。下面我们看一下这两大类的继承结构图:(图中的绿色的虚线代表实现,绿色实线代表接口之间的继承,蓝色实线代表类之间的继承。)
a)Collenction
b)Map
二、常用集合类
1、Set 存放无序不重复的数据 ,常用有HashSet;
Set收集对象时,如果发现有重复的数据,会不再收集该对象。如果要实现这一点,必须告知符合什么样的条件才算是“重复”。
Java规范中通过重载hashCode()和equals()方法来判断是否重复。如果你要收集的对象不属于String或Integet之类API已经提供好的类,务必要记得实现这两个方法。
2、List 序列
是以索引的方式记录所收集的对象顺序。List中常见的实现类是刚才所提及架构图中的ArrayList;
ArrayList像数组,读取速度快,但是需要调整索引(插入、删除)表现很差;LinkedList像链表,调整索引的表现非常好,但是随机读取的速度比较慢
3、Queue 队列
它是最常用的数据结构之一,只允许在队列的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。
Queue定义了自己特有的offer()、poll()和peek()等方法。建议优先使用offer()方法,而不是add()方法来收集对象。同样地,pool()和peek()方法建议优先于remove()、element()方法使用。他们最主要的区别在于,add()、remove()、element()方法出错时会抛出异常,offer()、poll()、peek()方法则会返回特定值。
4 、Map
HashMap:适用于在Map中插入、删除和定位元素。
Treemap:适用于按自然顺序或自定义顺序遍历键(key)。
HashMap通常比TreeMap快一点(树和哈希表的数据结构使然),建议多使用HashMap,在需要排序的Map时候才用TreeMap。