一個小白的記錄
阿新 • • 發佈:2018-12-19
Collection
- 集合中的頂級介面,定義了一些操作集合的方法
- 子介面:List Set
- List特點:有序線性表,可重複(兩個物件用equals比較為true)
- Set特點:不可重複
- 常用API
- add(Object o) 向集合中新增元素
- size() 集合的元素個數
- isEmpty() 判斷集合是否為空
- clear() 清空集合
- contains(Object o) 判斷集合中有無物件o
- remove(Object o) 刪除集合中的元素
- 儲存引用型別時,儲存的是引用型別的地址
- addAll(Collection c) 並集,將給定集合中的所有元素新增到當前集合中
- contaisAll(Collection c)判斷當前集合是否包含給定集合中的所有元素
- removeAll(Collection c) 刪除交集,將當前集合中與給定集合共有元素刪除
List
常用實現類:
- ArrayList 陣列實現,查詢更快
- LinkedList 連結串列實現,增刪更快,首尾增刪元素效能最好
注意: 對效能要求不是很苛刻時,通常用ArrayList
常用API
- get(int index)獲取指定位置處所對應的元素
- set(int index,Object o)
- add(int index, Object o) 提供了過載方法 將給定元素插入到指定位置
- remove(int index) 提供了過載方法 將當前集合中指定位置的元素刪除並將其返回
Iterator 迭代器
- 介面 定義了用於遍歷集合的相關方法
- 不同的集合都實現了一個用於遍歷自身的迭代器的實現類
- 使用迭代器的3個步驟 問 取 刪(刪不是必要的)
- 獲取迭代器 Iterator it = c.iterator();
- 問: it.hasNext()
- 取: (String)it.next()
- 刪: it.remove() 規定: 迭代器要求在遍歷的過程中不能通過集合的方法增刪元素否則會丟擲異常;迭代器自身提供的remove方法刪除的是通過next方法取出的元素
Iterator it = c.iterator();
while(it.hasNext()){ //問
String str = (String)it.next(); //取
it.remove(str); //刪
}
增強for迴圈(編譯器認可)
- jdk1.5後推出
- 不取代傳統for迴圈
- 用於遍歷集合或陣列
- 遍歷陣列
String[] array = {"one","two","three","four","five"};
/*
* 新迴圈並非JVM認可,而是編譯器在編譯期將使用新迴圈
* 遍歷陣列改變為傳統for迴圈遍歷陣列.
*/
for(String str : array){
System.out.println(str);
}
- 遍歷集合,不能用集合的刪除方法
/*
* 新迴圈遍歷集合就是迭代器遍歷,編譯器會在
* 編譯期間將其改為迭代器遍歷,所以不要在新
* 迴圈遍歷集合的過程中使用集合方法增刪元素
*/
泛型(編譯器認可)
- jdk1.5之後推出
- 常用在集合中,用於約定集合中的元素型別
- 泛型的原型是Object,不指定實際型別時,預設Object型別
- 指定泛型後,集合就只能儲存這一型別
- 迭代器支援泛型
- 獲取元素的時候不用轉換型別了
- 常見面試題 泛型角度問題