Java面試題之Java基礎部分 61-70題

61List和 Map區別?

1List是存儲單列數據的集合,map是存儲鍵和值這樣的雙列數據的集合

2List中存儲的數據是有順序,並且允許重複;Map中存儲的數據是沒有順序的,其鍵是不能重複的,它的值是可以有重複的

 

62List, Set, Map是否繼承自Collection接口?

ListSet是,Map不是

 

63ListMapSet三個接口,存取元素時,各有什麼特點?

 (1ListSet是存儲單列數據的集合,Map是存儲鍵和值這樣的雙列數據的集合

 (2ListSet具有相似性,它們都是單列元素的集合,所以,它們有一個功共同的父接口,叫CollectionList裏面的元素有順序可重複,Set裏面的元素無順序不可重複。Map中存儲的數據是沒有順序的,其鍵是不能重複的,它的值是可以有重複的。

 (3Listset添加元素用add方法,Map添加元素用put方法

 

64、說出ArrayList,Vector, LinkedList的存儲性能和特性

1ArrayList 是數組實現  它是線程不安全的。它每一次添加後都會增長50%長度。它在執行查找操作時效率比較高

2LinkedList 是鏈表實現它在執行修改或插入時效率比較高,是線程不安全的。

3Vector 它也是數組實現,它是線程安全的 它每一次添加後都會增長100%長度.無論是查找還是修改刪除操作效率都比較低。

 

65、去掉一個Vector集合中重複的元素

Vector newVector = new Vector();

for (int i=0;i<vector.size();i++)

{

Object obj = vector.get(i);

if(!newVector.contains(obj);

newVector.add(obj);

}

還有一種簡單的方式,HashSet set = new HashSet(vector);

 

66Collection和 Collections的區別。

1Collection是集合類的上級接口,繼承與他的接口主要有SetList.

2Collections是針對集合類的一個幫助類,他提供一系列靜態方法實現對各種集合的搜索、排序、線程安全化等操作。

 

67Set裏的元素是不能重複的,那麼用什麼方法來區分重複與否呢?是用==還是equals()?它們有何區別?用 contains來區分是否有重複的對象。還是都不用?

1)在比較時先調用hashCode 方法,如果不相同,證明不相等。如果相同,再調用equals 方法,如果equals 方法相同,證明相等,不相同,證明不相等。

2==:主要用在基本數據類型及引用

    equals:主要是對象或對象引用的比較。

(3)集合中是否包含某一個元素用contains 來判斷。

 

68、你所知道的集合類都有哪些?主要方法?

    最常用的集合類是 List 和 Map。 List的具體實現包括 ArrayList和 Vector,它們是可變大小的列表,比較適合構建、存儲和操作任何類型對象的元素列表。 List適用於按數值索引訪問元的素情形。

Map 提供了一個更通用的元素存儲方法。 Map集合類用於存儲元素對(稱作""""),其中每個鍵映射到一個值。

    Listadd,remove, containsmapput,removecontains

 

69、兩個對象值相同(x.equals(y) == true),但卻可有不同的hashcode,這句話對不對?

對;如果對象要保存在HashSetHashMap中,它們的equals相等,那麼,它們的hashcode值就必須相等。如果不是要保存在HashSetHashMap,則與hashcode沒有什麼關係了,這時候hashcode不等是可以的,例如arrayList存儲的對象就不用實現hashcode

 

70、TreeSet裏面放對象,如果同時放入了父類和子類的實例對象,那比較時使用的是父類的compareTo方法,還是使用的子類的compareTo方法,還是拋異常!

應該是沒有針對問題的確切的答案,當前的add方法放入的是哪個對象,就調用哪個對象的compareTo方法,至於這個compareTo方法怎麼做,就看當前這個對象的類中是如何編寫這個方法的。

發佈了116 篇原創文章 · 獲贊 34 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章