java集合類,collection,list,set,map


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爲空,線程安全,效率較低,現在使用比較少;


     





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