java學習筆記(15)
1:List的子類(掌握)
(1)List的子類特點
ArrayList:
底層資料結構是陣列,查詢快,增刪慢
執行緒不安全,效率高
Vector:
底層資料結構是陣列,查詢快,增刪慢
執行緒安全,效率低
LinkedList:
底層資料結構是連結串列,查詢慢,增刪快
執行緒不安全,效率高
(2)ArrayList
A:沒有特有功能需要學習
B:案例
a:ArrayList儲存字串並遍歷
b:ArrayList儲存自定義物件並遍歷
(3)Vector
A:有特有功能
a:新增
public void addElement(E obj) – add()
b:獲取
public E elementAt(int index) – get()
public Enumeration elements() – iterator()
B:案例
a:Vector儲存字串並遍歷
b:Vector儲存自定義物件並遍歷
(4)LinkedList
A:有特有功能
a:新增
addFirst()
addLast()
b:刪除
removeFirst()
removeLast()
c:獲取
getFirst()
getLast()
(5)案例:
A:去除集合中的多個字串的重複元素
如果字串的內容相同,即為重複元素
B:去除集合中的多個自定義物件的重複元素
如果自定義物件的成員變數值都相同,即為重複元素
C:用LinkedList模擬一個棧資料結構的集合類,並測試。
你要定義一個集合類,只不過內部可以使用LinkedList來實現。
2:泛型(掌握)
(1)泛型概述
是一種把明確型別的工作推遲到建立物件或者呼叫方法的時候才去明確的特殊的型別。
(2)格式:
<資料型別>
注意:該資料型別只能是引用型別。
(3)好處:
A:把執行時期的問題提前到了編譯期間
B:避免了強制型別轉換
C:優化了程式設計,解決了黃色警告線問題,讓程式更安全
(4)泛型的前世今生
A:泛型的由來
Object型別作為任意型別的時候,在向下轉型的時候,會隱含一個轉型問題
B:泛型類
C:泛型方法
D:泛型介面
E:泛型高階萬用字元
?
? extends E
? super E
(5)我們在哪裡使用呢?
一般是在集合中使用。
3:增強for迴圈(掌握)
(1)是for迴圈的一種
(2)格式:
for(元素的資料型別 變數名 : 陣列或者Collection集合的物件) {
使用該變數即可,該變數其實就是陣列或者集合中的元素。
}
(3)好處:
簡化了陣列和集合的遍歷
(4)弊端
增強for迴圈的目標不能為null。建議在使用前,先判斷是否為null。
4:靜態匯入(瞭解)
(1)可以匯入到方法級別的匯入
(2)格式:
import static 包名…類名.方法名;
(3)注意事項:
A:方法必須是靜態的
B:如果多個類下有同名的方法,就不好區分了,還得加上字首。
所以一般我們並不使用靜態匯入,但是一定要能夠看懂。
5:可變引數(掌握)
(1)如果我們在寫方法的時候,引數個數不明確,就應該定義可變引數。
(2)格式:
修飾符 返回值型別 方法名(資料型別… 變數) {}
注意:
A:該變數其實是一個數組名
B:如果一個方法有多個引數,並且有可變引數,可變引數必須在最後
(3)Arrays工具類的一個方法
asList()把陣列轉成集合。
注意:這個集合的長度不能改變。
集合儲存元素,加入泛型,並可以使用增強for遍歷。