Java的集合類
一、集合與數組
數組(可以存儲基本數據類型)是用來存現對象的一種容器,但是數組的長度固定,不適合在對象數量未知的情況下使用。
集合(只能存儲對象,對象類型可以不一樣)的長度可變,可在多數情況下使用。
二、Collection接口是集合類的根接口,Java中沒有提供這個接口的直接的實現類。但是卻讓其被繼承產生了兩個接口,就是Set和List。Set中不能包含重復的元素。List是一個有序的集合,可以包含重復的元素,提供了按索引訪問的方式。
Map是Java.util包中的另一個接口,它和Collection接口沒有關系,是相互獨立的,但是都屬於集合類的一部分。Map包含了key-value對。Map不能包含重復的key,但是可以包含相同的value。
Iterator,所有的集合類,都實現了Iterator接口,這是一個用於遍歷集合中元素的接口,主要包含以下三種方法:
1.hasNext()是否還有下一個元素。
2.next()返回下一個元素。
3.remove()刪除當前元素。
三、幾種重要的接口和類簡介
1、List(有序、可重復)
List裏存放的對象是有序的,同時也是可以重復的,List關註的是索引,擁有一系列和索引相關的方法,查詢速度快。因為往list集合裏插入或刪除數據時,會伴隨著後面數據的移動,所有插入刪除數據速度慢。
2、Set(無序、不能重復)
Set裏存放的對象是無序,不能重復的,集合中的對象不按特定的方式排序,只是簡單地把對象加入集合中。
3、Map(鍵值對、鍵唯一、值不唯一)
Map集合中存儲的是鍵值對,鍵不能重復,值可以重復。根據鍵得到值,對map集合遍歷時先得到鍵的set集合,對set集合進行遍歷,得到相應的值。
對比如下:
|
|
是否有序 |
是否允許元素重復 |
Collection |
否 |
是 |
|
List |
是 |
是 |
|
Set |
AbstractSet |
否 |
否 |
|
HashSet |
||
|
TreeSet |
是(用二叉排序樹) |
|
Map |
AbstractMap |
否 |
使用key-value來映射和存儲數據,key必須唯一,value可以重復 |
|
HashMap |
||
|
TreeMap |
是(用二叉排序樹) |
Java的集合類