1.java集合框架
集合頂層Collection包含List和Set。
List的實現類包括ArrayList和LinkedList;
Set的實現類 包括HashSet(無序)和TreeSet(有序);
接口Map 實現類包括HashMap(無序)和TreeMap(有序)
數組和集合的區別:a、數組長度固定,集合長度可變
b、數組存儲的是同一種類型的元素,集合可以存儲不同類型的數據
c、數組可以存儲基本數據類型,也可以存儲引用數據類型,集合只能存儲引用類型
Collection接口存儲一組不唯一,無序的對象
List接口存儲一組不唯一,有序的對象
Set接口存儲一組唯一,無序的對象
Map接口存儲一組鍵值對象
List 默認容量爲10個;超出容量後,之後每次增加當前容量的50%
2、Collection集合的方法
a、添加功能:
boolean add(E e);//將指定的元素追加到此列表的末尾,返回boolean值
boolean add(int index, E element);//將指定的元素插入此列表中的指定位置
boolean addAll(Collection c);//添加一個集合的元素
b、刪除功能:
void clear();//從此集合刪除所有元素
boolean remove(int index);//刪除該索引處的元素
boolean remove(Object o);//刪除指定的元素
c、判斷功能:
boolean contains(Object o);//如果此列表中包含指定的元素,則返回true
boolean containsAll(Collection c);//判斷集合中是否包含指定的集合元素
boolean isEmpty();//判斷集合是否爲空,集合是否爲空
d、獲取功能:
get(int index);//返回此列表中指定位置的元素
indexOf(Object o);//返回此列表中指定元素的第一次出現的索引,不包含則返回-1
e、交集功能:
boolean retainAll(Collection c);//兩個集合都有的元素
假設有A、B兩個集合,A對B做交集,最終結果保存在A中,B不變;返回值表示A是否發生過改變
f、長度功能:
int size();//返回此列表的元素數
set(int index,E element);用指定的元素替換列表中制動位置的元素
3、ArrayList 與LinkedList的區別
ArrayList 實現了長度可變的數組,在內存分配連續的空間。遍歷元素和隨機訪問元素
的效率比較高,查詢效率高。
LinkedList採用鏈表存儲方式。插入,刪除元素時效率比較高。
4、Map集合
Map<key,value> 接口 專門處理鍵值映射數據的存儲,可以根據鍵實現對值得操作
常用的實現類是HashMap
put(K key,V value);//將制定的值與此映射中的指定的鍵關聯
keySet();//返回此地圖中包含的鍵的Set視圖
remove(Object key);//從地圖中刪除指定鍵的映射
get(Object key);//返回到指定鍵所映射的值,或null
containsKey(Object key);//如果此映射包含指定鍵的映射,則返回true
遍歷Map集合:a、使用迭代器Iterator
獲取Iterator:Collection接口的iterate()方法
boolean hasNext();//判斷是否存在另一個課訪問的元素
Objiect next();//返回要訪問的下一個元素(獲取元素並移動到下一噶爾位置)
Iterator it= c.keySet().iterator();//獲取Iterator
//hasNext 判斷 next() 取出
while (it.hasNext()) {
System.out.println(c.get(it.next())); //不要多次使用it.next()方法
} 每次使用都是訪問一個對象
b、增強型的for循環
for(基本類型 別名:集合名 ){ }
5、Vector和ArrayList的異同
實現原理、功能相同,可以互用
主要區別:a、Vector線程安全。ArrayList重速度輕安全,線程非安全
b、長度需增長時,Vector默認增長一倍,ArrayList增長50%
6、Hashtable和HashMap的異同
實現原理、功能相同,可以互用
主要區別:a、Hashtable繼承Dictionary類,HashMap實現Map接口
b、Hashtable線程安全,HashMap線程非安全
c、Hashtable不允許null值,HashMap允許null值
7、泛型<> 數據變的安全
解決強制類型轉換時容易出現的異常:
List的get(int index)方法獲取元素,需要強制轉換
Map的get(Objet key)方法獲取元素,需要強制轉換
Iterator的next()方法獲取元素
8、HashCode的特性
a、HashCode的存在最主要用於查找的快捷性,如Hashtable,HashMap等,HashCode經常用於
確定對象的存儲地址;
b、如果兩個對象相同,equals方法一定返回true,並且這兩個對象的HashCode一定相同
c、這兩個對象的HashCode相同 ,並不一定表示這兩個對象就相同,即equals()不一定
爲true,只能說明這兩個對象在一個散列存儲結構中。
d、如果兩個對象的equals方法被重寫,那麼對象的HashCode也需要重寫
哈希算法也稱爲散列算法,是將數據依特定的算法直接指定到一個地址上