Java學習筆記之——集合
集合是類,用來儲存多個數據,有屬性、方法
集合是一個可變陣列,儲存相同元素並且長度可變
1. 體系
(1)Collection:儲存一個一個的值
Iterable:
Iterable<T> iterator()
返回一個組T型別的元素上進行迭代的迭代器
用來遍歷元素的物件
Collection子介面:List、Set
List
特點:元素可重複,有序(有序號的),完全可以使用List替換陣列
有序:放進去的順序和拿出來的順序是一樣的
Set
特點:元素不可重複,無序(無序號的)
無序:放進去的順序和拿出來的順序不一樣
Queue:佇列(會和執行緒公用,暫時不掌握)
(2)Map:儲存一對一對的值,鍵值對(key-value)
泛型
只能是引用型別
可以把資料型別變數化
可以根據需要指定型別
a.可以在類上加泛型,整個類都可以用,在建立物件時指定型別
可以限定泛型的型別:
T extends 父類:向下限定
T super:向下限定
b.對於靜態方法,可以在方法上加泛型
訪問修飾符<泛型列表> 返回值型別 方法名(引數列表){
實現程式碼
}
2. ArrayList
使用語法:ArrayList<引用資料型別> arrayList=new ArrayList<>();
常用方法:
3. 遍歷集合(List的遍歷)
方法一:for迴圈
for(int i=0;i<array.size();i++){
system.out.printlt(array.get(i));
}
方法二:迭代器(必須掌握)
遍歷陣列儘量使用迭代器,因為靠譜
(1)迭代器相關方法API:
void |
forEachRemaining(Consumer<? super E> action) 對每個剩餘元素執行給定的操作,直到所有元素都被處理或動作引發異常。 |
boolean |
hasNext() 如果迭代具有更多元素,則返回 true 。 |
next() 返回迭代中的下一個元素。 |
|
void |
remove() 從底層集合中刪除此迭代器返回的最後一個元素(可選操作)。 |
(2)迭代器刪除方法使用案例
方法三:foreach(增強for迴圈)
語法:for(元素型別 變數名:Collection集合){
system.out.printl(變數名);
}
Collection,陣列都可以
實現Iterable介面的類可以成為foreach的目標
適用於做遍歷輸出
本質上:還是使用迭代器
4. ArrayList的排序
方法一:氣泡排序
方法二:Comparable比較介面
介面 Comparable<T>
引數型別:
T - 可以將此物件與之進行比較的物件型別
方法:
int compareTo(T o) :比較此物件與指定物件的順序
o - 要比較的物件
返回:
負整數、零或正整數,根據此物件是小於、大於、等於指定物件
當前物件大於傳入物件,返回正整數
當前物件等於傳入物件,返回零
當前物件小於傳入物件,返回負整數
一個類實現是這個介面,意味著可以通過int compareTo進行比較大小
藉助Collections:工具類
short()方法:排序
總結:
1) 元素類實現Comparable介面,重寫CompareTo方法
2) 利用Collection.short(List)排序
方法三:單獨一個類實現Comparator介面,具備比較兩個元素大小的方法
Comparator<T>:
int compare(T o1,T o2) 比較用來排序的兩個引數
引數:o1---要比較的第一個物件
o2---要比較的第二個物件
返回:
根據第一個引數小於、等於、大於第二個引數分別返回負整數、零、正整數
1)定義類,實現Comparator的繼承,重寫Compare方法
2)實現排序
或者使用匿名內部類直接實現排序: