棧:先進後出。java
存儲元素到集合中叫入棧,也叫壓棧。數組
將元素從集合中取出叫出棧,也叫彈棧。數據結構
存入元素的順序和取出元素的順序是相反的。指針
隊列:先進先出。對象
隊列的出口和入口在集合的兩側,故和平時排隊同樣先進的先出。排序
特色:查詢快,增刪慢。索引
由於數組的地址相連的,咱們經過數組的首地址能夠找到數組,經過索引能夠快速查找到某個元素,即查詢快。接口
由於數組的長度是固定的,因此若要增長/刪除一個元素,必須建立新的數組,再把原來的數組複製進來,即增刪慢。隊列
特色:查詢慢,增刪快。element
鏈表中的地址不是相連的,每次查詢元素都是從頭開始查詢的,即查詢慢。
在鏈表結構,增長/刪除一個元素,對鏈表的總體結構沒有影響,即增刪快。
在鏈表中,每個元素也被稱做一個節點。
一個節點包含了一個數據源(存儲數組),兩個指針域(存儲地址)。
單向鏈表:鏈表中只有一個鏈子,不能保證元素的順序(存入元素的順序和取出元素的順序可能不一致)。
雙向鏈表:鏈表中有兩條鏈子,有一條鏈子是專門記錄元素的順序的,是一個有序的集合。
二叉樹:分支不能超過兩個的樹。
排序樹/查找樹:在二叉樹的基礎上,元素是有大小順序的,左子樹小,右子樹大。
平衡樹:左子樹和右子樹的的孩子數相等。
紅黑樹:
特色:趨近於平衡樹,查詢速度很是快,查詢葉子節點最大次數和最小次數不能超過2倍。
約束:
1).節點能夠是紅色或黑色的。
2).根節點是黑色的。
3).葉子節點(空節點)是黑色的。
4).每一個紅色節點的子節點都是紅色的。
5).任何一個節點到器每個葉子節點的全部路上黑色的節點數相同。
java.util.List extends Collection接口
List接口的特色:
1).是一個有序的集合,存儲元素和取出元素的順序是一致的。
2).有索引,包含了一些帶有索引的方法。
3).容許存儲重複的元素。
List接口中帶有索引的方法(特有):
1).public void add(int index,E element);
功能:將指定元素添加到該集合中的指定位置上。
2).public E get(int index);
功能:返回返回集合中指定位置的元素。
3).public E remove(int index);
功能:移除列表中的指定位置的元素,返回的是被移除的元素。
4).public E set(int index,E element);
功能:用指定的元素替換集合中指定位置的元素,返回值是被替換的元素。
注意:在操做索引時,必定須要防止索引越界異常(IndexOutOfBoundsException)。
· 數組越界異常(ArrayIndexOutOfBoundsException)。
· 字符串索引越界異常(StringIndexOutOfBoundsException)。
java.util.ArrayList集合數據存儲結構是數組結構,增刪慢,查詢快。
java.util.LinkkedList集合 implements List接口
LikedList集合的特色:
1).底層是一個鏈表結構:查詢慢,增刪快。
2).裏邊包含大量操做首尾元素的方法。
注意:使用LinkedList集合的特有方法時,不能使用多態。
經常使用方法:
1).public void addFirst(E e):
功能:將指定元素插入到此列表的開頭。
2).public void addLast(E e):
功能:將指定元素插入到此列表的結尾。
3).public void push(E e):
功能:將元素推入此列表所表示的堆棧(此功能等效於public void addFirst(E e))。
4).public E getFirst();
功能:返回該列表的第一個元素。
5).
public E getLast();
功能:返回該列表的最後一個元素。
6).
public E removeFirst();
功能:移除並返回該列表的第一個元素。
7).
public E getLast();
功能:移除並返回返回該列表的最後一個元素。
8).public E pop();
功能:從列表所示的堆棧中彈出一個元素(功能等效於public E removeFirst())。
9).public boolean isEmpty();
功能:若此列表不包含元素,則返回ture。
能夠實現增加的對象數組。