Java集合大全

	集合是程序員在面試和實際開發過程中用的很多的技術,今天我收集也整理了一些關於集合的東西,大家可以看一下。
	首先我們通過一張思維導圖來認識一下集合的框架構成,方便理解和記憶。

在這裏插入圖片描述

現在我們來看幾個簡單的分析
1、ArrayList和LinkList的區別

	ArrayList(數組結構)
			優點:get和set調用花費常數時間,也就是查詢的速度快。
			缺點:新項的插入和現有的項低的刪除代價昂貴,也就是添加刪除的速度慢。
	LinkList(鏈表結構)
			優點:新項的插入和現項的刪除開銷很小,即添加和刪除的速度快。
			缺點:對get和set的調用花費的昂貴,不適合做查詢。

2、Conllection接口的remove()方法和iterator接口remove()方法區別?

    ①性能方面
     Collection的remove方法必須首先找出要被刪除的項,找到該項的位置採用的是單鏈表結構查詢,單鏈表查詢效率比較低,需要從集合中一個一個遍歷才能找到該對象;
     Iterator的remove方法結合next()方法使用,比如集合中每隔一項刪除一項,Iterator的remove()效率更高
    ②容錯方面
     在使用Iterator遍歷時,如果使用Collection的remove則會報異常,會出現ConcurrentModificationException,因爲集合中對象的個數會改變而Iterator 內部對象的個數不會,不一致則會出現該異常
     在使用Iterator遍歷時,不會報錯,因爲iterator內部的對象個數和原來集合中對象的個數會保持一致

3、Array與ArrayList有什麼區別

 	①Array是Java中的數組,聲明數組有三種方式
	int[] a=new int[10];
	int a[]=new int[10];
	int a[]={1,2,3,4};
	可以看出:在定義一個數組的時候,必須指定這個數組的數據類型及數組的大						小,也就是說數組中存放的元素個數固定並且類型一樣

	②ArrayList是動態數組,也就是數組的複雜版本,它可以動態的添加和刪除元素,被稱爲”集合“,集合的聲明如下
	ArrayList list = new ArrayList(10);
	ArrayList<Integer> list1 = new ArrayList<Integer>();
	可以看出:在不使用泛型的情況下,這個list是可以添加進不同類型的元素的,而且arraylist是可以不用指定長度的。在使用泛型時,我們就只能添加一種類型的數據了
	可以從三方面回答面試官
	①.ArrayList是Array的複雜版本
	②.存儲的數據類型:Array只能存儲相同數據類型的數據,而ArrayList可以存儲不同數據類型的數據
	③.長度的可變:Array的長度是固定的,而ArrayList的長度是可變的

4、HashMap的實現原理

通過put和get存儲和獲取對象,存儲對象時,我們將K/V傳給put方法時,它調用hashcode計算hash從而得到bucket位置,進一步存儲,HashMap會根據當前bucket的佔用情況自動調整容量。獲取對象時,我們將K傳遞給get,他調用hashcode計算hash從而得到bucket位置,並進一步調用equals()方法確認鍵值對。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章