1. 程式人生 > >Java學習筆記之——集合

Java學習筆記之——集合

集合是類,用來儲存多個數據,有屬性、方法

集合是一個可變陣列,儲存相同元素並且長度可變

1. 體系

1)Collection:儲存一個一個的值

Iterable:

Iterable<T> iterator()

返回一個組T型別的元素上進行迭代的迭代器

用來遍歷元素的物件

Collection子介面:ListSet

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 。

E

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)實現排序

 

或者使用匿名內部類直接實現排序: