set(無序,不可重復(fù),線程不安全,增加刪除快,查詢慢)
Set是無序的,指的是隊(duì)列排列結(jié)果無法預(yù)知,不是按照插入順序排列。所以,
TreeSet既成自Set,無序,但是結(jié)果是按照二叉樹排列,HashSet安裝哈希表排列。
Set的排序:
自然排序:
1、TreeSet的add會(huì)把對(duì)象升級(jí)為Comparable類型
2、add的時(shí)候調(diào)用compareTo方法比較
3、安裝compareTo方法進(jìn)行排序存儲(chǔ)
比較器比較
1、創(chuàng)建TreeSet的時(shí)候接收Compator
2、add的時(shí)候調(diào)用Compator的compare方法
3、安裝compareTo方法進(jìn)行排序存儲(chǔ)
List(有序,可以重復(fù),線程不安全)
線程不安全的解決辦法(裝飾)
List list=Collections.synchronizedList(newLinkedList(...));
子類有ArrayList,LinkedList,Queue,
ArrayList的底層是可變數(shù)組,隨著元素增大按照50%擴(kuò)容(即變成原來的1.5倍),新增刪除慢,查詢?cè)乜?/p>
LinkedList底層是鏈表,新增刪除快,查詢?cè)芈?/p>
HashMap和Hashtable的區(qū)別
1、HashMap可以保存null key和null value,但是Hashtable不可以
2、HashMap是線程不安全的,Hashtable是線程安全的。多個(gè)線程可以共享一個(gè)Hashtable,而沒有正確同步的話,多個(gè)線程是不能共享HashMap的。
3、正是因?yàn)镠ashtable是線程安全的,所以在單線程的情況下Hashtable的效率比較低,應(yīng)該選擇HashMap。
HashMap可以通過下面的語句進(jìn)行同步:
Map m = Collections.synchronizeMap(hashMap);
HashMap和TreeMap的區(qū)別
HashMap 的底層是哈希表,非線程安全的,允許null 的key和null的value。key不能重復(fù),value可以重復(fù)。
TreeMap的底層是紅黑樹。非線程安全,不允許null。value可以重復(fù)。不能重復(fù),value可以重復(fù)。
JDK 1.5后新特性
1、泛型
2、裝箱和拆箱
3、可變參數(shù)
4、枚舉
5、增強(qiáng)for循環(huán)
6、靜態(tài)導(dǎo)入
java中類加載器、反射、動(dòng)態(tài)代理之間的關(guān)系
1、類加載器是用來把一個(gè)類的.class文件從硬盤中加載到虛擬機(jī)上變成對(duì)象的類。
Bootstrap classloader、extention classloader、app classloader
2、反射是通過字節(jié)碼文件對(duì)象將字段,方法,構(gòu)造等成員變量映射成響應(yīng)的類,獲取并操作類的成員變量的技術(shù)。
3、動(dòng)態(tài)代理中通過反射調(diào)用目標(biāo)方法,是反射的應(yīng)用。