61、List和 Map區別?
(1)List是存儲單列數據的集合,map是存儲鍵和值這樣的雙列數據的集合
(2)List中存儲的數據是有順序,並且允許重複;Map中存儲的數據是沒有順序的,其鍵是不能重複的,它的值是可以有重複的。
62、List, Set, Map是否繼承自Collection接口?
List,Set是,Map不是
63、List、Map、Set三個接口,存取元素時,各有什麼特點?
(1)List與Set是存儲單列數據的集合,Map是存儲鍵和值這樣的雙列數據的集合
(2)List與Set具有相似性,它們都是單列元素的集合,所以,它們有一個功共同的父接口,叫Collection。List裏面的元素有順序可重複,Set裏面的元素無順序不可重複。Map中存儲的數據是沒有順序的,其鍵是不能重複的,它的值是可以有重複的。
(3)List和set添加元素用add方法,Map添加元素用put方法
64、說出ArrayList,Vector, LinkedList的存儲性能和特性
(1)ArrayList 是數組實現 它是線程不安全的。它每一次添加後都會增長50%長度。它在執行查找操作時效率比較高
(2)LinkedList 是鏈表實現它在執行修改或插入時效率比較高,是線程不安全的。
(3)Vector 它也是數組實現,它是線程安全的 它每一次添加後都會增長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);
66、Collection和 Collections的區別。
(1)Collection是集合類的上級接口,繼承與他的接口主要有Set和List.
(2)Collections是針對集合類的一個幫助類,他提供一系列靜態方法實現對各種集合的搜索、排序、線程安全化等操作。
67、Set裏的元素是不能重複的,那麼用什麼方法來區分重複與否呢?是用==還是equals()?它們有何區別?用 contains來區分是否有重複的對象。還是都不用?
(1)在比較時先調用hashCode 方法,如果不相同,證明不相等。如果相同,再調用equals 方法,如果equals 方法相同,證明相等,不相同,證明不相等。
(2)==:主要用在基本數據類型及引用
equals:主要是對象或對象引用的比較。
(3)集合中是否包含某一個元素用contains 來判斷。
68、你所知道的集合類都有哪些?主要方法?
最常用的集合類是 List 和 Map。 List的具體實現包括 ArrayList和 Vector,它們是可變大小的列表,比較適合構建、存儲和操作任何類型對象的元素列表。 List適用於按數值索引訪問元的素情形。
Map 提供了一個更通用的元素存儲方法。 Map集合類用於存儲元素對(稱作"鍵"和"值"),其中每個鍵映射到一個值。
List:add,remove, contains;map:put,remove,contains等
69、兩個對象值相同(x.equals(y) == true),但卻可有不同的hashcode,這句話對不對?
對;如果對象要保存在HashSet或HashMap中,它們的equals相等,那麼,它們的hashcode值就必須相等。如果不是要保存在HashSet或HashMap,則與hashcode沒有什麼關係了,這時候hashcode不等是可以的,例如arrayList存儲的對象就不用實現hashcode。
70、TreeSet裏面放對象,如果同時放入了父類和子類的實例對象,那比較時使用的是父類的compareTo方法,還是使用的子類的compareTo方法,還是拋異常!
應該是沒有針對問題的確切的答案,當前的add方法放入的是哪個對象,就調用哪個對象的compareTo方法,至於這個compareTo方法怎麼做,就看當前這個對象的類中是如何編寫這個方法的。