標籤:動態 序列 元素 定義 概念 cts add 意思 arraylist
1.集合架構概念:
(1)所謂的架構就是一個類庫的集合。集合架構就是一個用來表示和操作集合的統一的架構,
它包含了實現結合的介面與類,可以這樣理解:集合架構中提供了各種各樣的容器,
每一種容器都可以操作存放資料,並提供操作容器中這些資料的相關方法。把具有共同特點的
容器再抽象出來產生一個統一的介面,讓具體的容器去實現這些介面,集合架構中還提供了專門
操作容器的類。
(2)集合架構中不同的集合類有各自不同的資料結構,所以在使用中要根據應用的效能要求來選擇
不同的集合類。 也就是說,每一種容器中封裝的資料結構是不同的,不同的資料存放和操作資料的
效能也不同,所以在使用中要根據應用的效能要求來選擇不同的集合類或者說是選擇不通過的容器
(3)集合類存放在java.util包中, 今後進行程式編寫時將大量使用集合類和相關介面。
(4)集合架構中主要又這些介面組成:
Iterable 迭代器介面
Collection 類集介面
List 列表介面
Set 資料集介面
Queue 隊列
Map 鍵-值對組合映射表
Collection介面是Iterable介面的子介面,List、Set、 Queue又是Collection的子介面
SortedSet又是Set的子介面
SortedMap是Map的子介面
(5)Iterable介面和迭代器:
1)Iterable介面:
a. 實現該介面允許對象成為“foreach”語句的目標,即該集合對象允許迭代
(迭代也就是遍曆訪問的意思,一旦一個容器去實現了Iterable介面,那麼我們就可以通過
Iterable介面中提供的方法來擷取一個迭代器對象,通過這個迭代器對象就可以統一的遍曆方式訪問
容器中的資料,當然,容器中的資料也可以通過foreach語句來遍曆)
b. 類集介面Collection是Iterable的子介面,所以所有類集對象可以迭代訪問,而映射Map不行
(只要是Iterable的子介面,都可以使用迭代訪問)
c. 如何得到一個迭代器對象?通過Iterable介面的iterator() 方法:
Iterator <T> iterator()
功能:返回一個在 一組T類型(泛型)的元素上進行迭代的迭代器對象
2)迭代器(迭代器對象)是實現了Iterator/ListIterator介面的類的對象,可以通過遍曆類集,訪問操作
其中的每個元素
3) ListIterator介面擴充了父介面Iterator,允許雙向遍曆集合,並可以修改和刪除元素
(當一個迭代器實現了Iterator介面,它只能從集合的第一個元素訪問到最後一個元素,而不能從最後一個
訪問到第一個元素,但如果一個迭代器實現了ListIterator介面,就可以進行雙向訪問,通過 ListIterator介面
的previous()方法來實現)
(6)類集Collection介面定義的方法
Collection表示一組對象,這些對象也稱為collection的元素
int size()返回此collection中的元素個數
boolean isEmpty() 如果此collection不包含元素,則返回true
boolean contains(Object o) 如果此collection包含指定的元素,則返回true
Iterator <E> iterator()
返回對這個容器進行遍曆的一個迭代器對象(返回在此collection的元素上進行迭代的迭代器對象)
Object[] toArray()返回包含此collection中所有元素的數組
boolean add(E e)確保此collection包含指定的元素
boolean remove(Object o) 從collection中移除指定元素的單個執行個體
void clear()移除此collection中的所有元素
(7)List介面:
List介面擴充了Collection,其特點是:資料的存放是有序且可重複的,包括null,通過整數索引來訪問
Set介面擴充了Collection,其特點是:無序且不可重複的
Map介面:是一個儲存索引值對的對象,給定一個關鍵字,可以查詢得到它的值。
關鍵字和值都可以是對象。映射不是Collection的子介面,所以它本身不能使用迭代器來進行遍曆
(8)List容器特點:
a. List容器是有序的collection(也稱為序列)此介面的 使用者可以對List容器中每個元素的
插入位置進行精確的控制,使用者可以根據元素的整數索引(也就是在列表中的位置)訪問元素,並搜尋列表中的
元素。List容器允許插入重複的值,包括null
b. 最常用的兩個List介面的實作類別是ArrayList和LinkedList
********************ArrayList***********************
1) ArrayList——動態數組
2) ArrayList類擴充了AbstractList並實現了List介面 ,故List介面裡有的方法,ArrayList都有
3) 支援可隨需增長的動態數組(數組容量會隨著資料增加而自動變化)
4) ArrayList構造方法:
ArrayList() 構造一個初始容量為10的空數組
ArrayList(Collection c) 構造一個動態數組,裡邊有初始資料,初始資料為傳進來的Collection c的內容
ArrayList(int capacity) 建立一個指定大小的空的動態數組(存放的是對象的引用變數)
//建立一個List容器:List<String> list = new ArrayList<String>();
5) 除了繼承的方法之外,ArrayList常用方法有:
E get(int index) 返回此列表中指定位置上的元素
int indexOf(Object o) 返回此列表中首次出現的指定元素的索引,或如果此列表中不包含元素,則返回-1
*******************LinkedList實作類別**********************
1)LinkedList——鏈表 實作類別的底層實際是一個鏈表資料結構
2)LinkedList類擴充了AbstractSequentialList並實現List介面
3)LinkedList提供了一個鏈表資料結構
4)LinkedList有2個構造方法:
LinkedList();
LinkedList(Collection);
5)除了繼承的方法之外,LinkedList類還定義了一些有用的方法用於操作和訪問容器中的資料
比如:
void addFirst(E e)
void addLast(E e)
E removeFirst()
E removeLast()
java集合架構