集合
1.是什么?容器,存儲數據。主要是放對象,當前臺訪問,將數據封裝到一個對象,而對象可能是多個,在與數據庫進行交互時,一般都用集合來存放數據。它的長度可變。
2.與數據比較:【1】 數組一旦聲明,其長度固定,類型一致,不夠靈活;【2】數組的插入,刪除效率低。
3.底層原理:
4.分類:
(1)Collection:總的接口:無序且不唯一:兩個子接口:List和Set。還有一個不常用的Vector接口。
List接口:有序但不唯一,添加順序,有兩個實現類:
ArryList:有序,不唯一;底層是數組。查詢,修改快。
LinkList:無序,唯一。底層是鏈表。添加刪除快。
Set接口:無序,唯一,兩個實現類:HashSet和TreeSet。
HashSet:無序唯一,底層數據結構為哈希表。重寫hashCode和equals方法。
TreeSet:有序唯一,底層為二叉樹,但必須實現Comparable或Comparator接口。
(2)Map接口:鍵值對key,value形式存儲數據,鍵不能重復,值可以。分別兩個實現類:
HashSet:底層為哈希表,key無序,唯一。
TreeSet: 底層為二叉樹,key有序,唯一。
(3)方法獲得該對象的哈希碼表,然后根據哈希嗎找到相應的存儲區域,最后取得該存儲區域內的每個元素與該對象進行equals方法比較;
5.迭代器:collection繼承iterable接口,遍歷器。
(1)for(Iterator it=col1.iterator();it.hasNext();){
System.out.print(it.next()+"\t");
};
(2)加強for循環。
6.方法:
* 【1】增 add(Object obj) addAll(Collection col),add(int index,Object obj)
* 【2】刪 clear(),? remove(Object obj)? ,Object? remove(int index)
* 【3】改 set(int index,Object obj)
* 【4】查size(),itrator(), listIterator(),get(int index)
* 【5】判 isEmpty(),contains(Object obj)