JAVA_SE基礎知識——集合框架(List、Set、Map)

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也需要重寫

哈希算法也稱爲散列算法,是將數據依特定的算法直接指定到一個地址上
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章