?????List接口:有序的集合(存儲(chǔ)和取出元素相同);允許存儲(chǔ)重復(fù)的元素;有索引,可以使用普通的for循環(huán)遍歷。Vector集合、ArrayList集合、LinkedList集合。
? ? Set接口:不允許存儲(chǔ)重復(fù)的元素;沒有索引(不能使用普通的for循環(huán)遍歷)。Tree集合、HashSet集合。
Collection是所有單列集合的父接口,因此在Collection中定義了單列集合(List和Set)通用的一些方法,這些方法可用于操作所有的單列集合。方法如下:
* `public boolean add(E e)`:? 把給定的對(duì)象添加到當(dāng)前集合中 。
* `public void clear()` :清空集合中所有的元素。
* `public boolean remove(E e)`: 把給定的對(duì)象在當(dāng)前集合中刪除。
* `public boolean contains(E e)`: 判斷當(dāng)前集合中是否包含給定的對(duì)象。
* `public boolean isEmpty()`: 判斷當(dāng)前集合是否為空。
* `public int size()`: 返回集合中元素的個(gè)數(shù)。
* `public Object[] toArray()`: 把集合中的元素,存儲(chǔ)到數(shù)組中。
????Iterator迭代器
Iterator接口的常用方法如下:
* `public E next()`:返回迭代的下一個(gè)元素。
* `public boolean hasNext()`:如果仍有元素可以迭代,則返回 true。
????泛型
??在創(chuàng)建對(duì)象的時(shí)候確定泛型。
? ? 泛型通配符?,使用迭代器遍歷集合,it.next()方法,取出的是Object。
? ? 泛型的上限限定:?extends E,代表使用的泛型只能是E類型的子類/本身;泛型的下限限定:? super E,代表使用的泛型只能是E類型的父類/本身。
常見的數(shù)據(jù)結(jié)構(gòu)
? ??棧:先進(jìn)后出? ? 隊(duì)列:后進(jìn)先出? ?鏈表:查找元素慢,增刪快
? ??二叉樹:binary tree ,是每個(gè)結(jié)點(diǎn)不超過2的有序樹(tree) 。紅黑樹本身就是一顆二叉查找樹,將節(jié)點(diǎn)插入后,該樹仍然是一顆二叉查找樹。也就意味著,樹的鍵值仍然是有序的。
紅黑樹(查詢速度非??欤┑募s束:
1.節(jié)點(diǎn)可以是紅色的或者黑色的2. 根節(jié)點(diǎn)是黑色的
3. 葉子節(jié)點(diǎn)(特指空節(jié)點(diǎn))是黑色的
4. 每個(gè)紅色節(jié)點(diǎn)的子節(jié)點(diǎn)都是黑色的
5. 任何一個(gè)節(jié)點(diǎn)到其每一個(gè)葉子節(jié)點(diǎn)的所有路徑上黑色節(jié)點(diǎn)數(shù)相同
紅黑樹的特點(diǎn):速度特別快,趨近平衡樹,查找葉子元素最少和最多次數(shù)不多于二倍
????java.util.ArrayList 集合數(shù)據(jù)存儲(chǔ)的結(jié)構(gòu)是數(shù)組結(jié)構(gòu)。元素增刪慢,查找快,由于日常開發(fā)中使用最多的功能為查詢數(shù)據(jù)、遍歷數(shù)據(jù),所以 ArrayList 是最常用的集合。java.util.LinkedList 集合數(shù)據(jù)存儲(chǔ)的結(jié)構(gòu)是鏈表結(jié)構(gòu)。方便元素添加、刪除的集合。
可變參數(shù):修飾符 返回值類型 方法名(參數(shù)類型... 形參名){ }
? ??