list數組集合,set不允許有相同的值存入,map是鍵值對(key--value)。
list:
ArrayList和LinkedList的區別:
ArrayList:自動增長的數組,查詢效率比較高,但是添加和刪除效率比較低,如果一開始有大量的數據確定加入,而不是動態的添加,可以用ensureCapacity方法加入一下,這樣效率可以高一點;
LinkedList:是用雙向循環鏈表實現的,查詢效率低,但添加和刪除效率高;
都是線程不安全
ArrayList和Vector的區別:
ArrayList:線程不安全,但相應的效率會高一點;
Vector:線程安全,同樣相應的效率會低一點;
他們兩個一旦數量超過原先規定的大小,動態增加的時候,不是隻增加一個存儲單元,而是一定量
set:
set中怎麼判斷兩個值是否相同? Object中equals和hashcode基本是所有類都要繼承重寫的方法,在set比較兩個值的時候會用到;
首先會用hashcode()判斷兩個值是否相同,如果相同則調用equals()方法比較,如果也相同則代表兩個值相同;(兩個對象如果hashcode一樣,.equals不一定一樣;.equals一樣,hashcode一定一樣)
而Treeset不會用到這種方法
Treeset用的是comparator接口,而且Treeset中元素是排好序的,這個特點也是得益於comparator接口,comparatorTo()方法返回整型,如果當前對象大於參數對象就返回正數,等於就返回0,小於就返回負值
map:
map中爲key--value,遍歷裏的話:
先調用keyset()得到key的set集合;
遍歷得到的key的集合;
根據key值得到value值;
hashmap和hashtable的區別:
hashmap允許key爲空,線程不安全,但效率較高;
hashtable不允許key爲空,線程安全,效率較低,現在使用比較少;