Java集合的面試題

2021-09-12 10:39:44 字數 3152 閱讀 6689

分兩大類,map和collection。而collection又有子介面list(資料儲存順序和插入順序是一樣的)、set(裡面的元素具有唯一性)

map是儲存鍵值對的,裡面的健不可以重複,但值可以重複

. 對於list主要有arraylist和linkedlist兩種實現。實現的資料結構不同,所以主要的區別也都是和資料結構相關的

set也是一種collection,和list比起來主要體現在元素唯一性。

集合的remove(帶參);

iterator()無參 ,必須配合next()方法使用

從兩方面比較

效能方面:connection的remove的方法必須乙個乙個的查詢需要被刪除的項,(因為單鏈表結構),查詢效率低

iterator的remove()方法結合next()方法使用,他會每隔一項刪除一項,所以效率更高

2.容錯方面:如果使用iterator遍歷時,使用connection的remove()方法會報concurrentmodificationexception異常,而iterator遍歷時,則不會報錯

如以下**塊

@test

public void contextloads()

iterator iterator = list.iterator();

while(iterator.hasnext())

}

int a=new int[10];

int a1=new int[10];

int a2=;

//格式1:

int arr = new int[5];

//格式2:

int arr1 = new int;

// 格式3:

intarr2 = ;

從三個方面來回答面試官:

arraylist比array複雜

儲存的資料型別:array只單純的儲存一種資料型別,而arraylist可以儲存不同的資料型別

3 array的長度固定,不可變,arraylist長度可變

//陣列轉list    arrays.aslist方法

string str=;

//使用aslist方法

liststrings = arrays.aslist(str);

system.out.println(strings.get(0));//輸出測試

//但是需要注意的是,當陣列轉成集合後,集合不能做新增(add)和刪除remove()操作,否則會報錯

//解決辦法

arrayliststrings1 = new arraylist<>(strings);//現在可以執行新增和刪除操作了

strings1.remove(0);

//list轉陣列 lsit.toarray()

listlist=new arraylist<>();

string strings2 = list.toarray(new string[list.size()]);

system.out.println(strings2);//測試

hashset速度快

treeset內部自動排序,如以下**

treeset treeset=new treeset();

treeset.add(23);

treeset.add(1);

treeset.add(54);

treeset.add(66);

for (object o:treeset)

linkedlist是插入的順序集合,就使用linkedlist

如果是對map的插入,刪除和定位元素,hashmap可能更好(key/value可以為null)

有排序的話,用treemap較好

如果是需要按順序插入的儲存集合,用linkedhashmap更好

hashmap

hashset

實現了map介面

實現了set介面

hashmap儲存鍵值對

hashset僅僅儲存物件

使用put()方法新增

使用add()方法新增

hashmap中使用鍵物件來計算hashcode值

hashset使用成員物件來計算hashcode值,對於兩個物件來說hashcode可能相同,所以equals()方法用來判斷物件的相等性,如果兩個物件不同的話,那麼返回false

hashmap比較快,因為是使用唯一的鍵來獲取物件 hashset較hashmap來說比較慢

collections是乙個工具類,可以直接呼叫list和set的方法

collection是乙個介面,是list和set集合的父介面

sort():對集合進行排序

shuffle():打亂集合中的元素順序

addall():將乙個集合新增到另乙個集合中

max():判斷集合中的最大值

min():判斷集合中的最小值

copy():將乙個集合中的元素複製到另乙個集合中去

fill():將乙個集合中的元素全部替換成指定的元素

iterable介面可以擁有增強for迴圈,(foreach)

他的方法有

hashnext () :是否存在下一項

next();獲取下一項

remove() 刪除需要配合next()方法使用

list 特點:有序 可重複

list下面存在arraylist和linkedlist

arraylist 查詢快 基於陣列

linkedlist:增刪改快,基於鍊錶

set的特點:無序 不可重複

hashset :速度快,無序,只能存在乙個null

treeset : 可以按公升序儲存物件

linkedlist: 按新增的順序儲存物件

queue  佇列   先進先出   (比如排隊)

還有乙個堆疊 先進後出 (比如堆沙子)

由queue衍生出 message 和looper(迴圈) 和handler

java集合面試題

分享一下面試常會問到的 集合面試題 1,arraylist,linklist,vector 的區別 arraylist 的優點 查詢速度快 使用非同步方式 linklist 增刪改速度快 vector 查詢速度快 和arraylist類似 使用同步方式 擴容是arraylist的0.5倍使用場景 a...

面試題之Java 集合

方法 size 返回集合中的項數。isempty 判斷集合中是否為空 contains object 判斷集合中是否包含某項 clear add e 從集合中新增某項 remove object 從集合中刪除某項 iterator 遍歷集合 2.1.實現iterable介面的的類可以擁有增強for迴...

java集合面試題整理

可能會導致死迴圈和更新丟失問題。死迴圈的成因涉及到四個方法,最初的起因是呼叫put 方法,跟著方法走一遍 put 方法原始碼 只給出核心部分 public v put k key,v value modcount 該key不存在,需要增加乙個結點 addentry hash,key,value,i ...