一、問題描述:
前幾天寫webservices接口,需要同步人力資源,涉及到添加順序:主賬號需要添加在次賬號之前,直接上級需要添加在下級之前。解析xml之后直接封裝在HashMap中,導致取對象時順序被打亂,隨后封裝在LinkedHashMap中得以解決。
二、主要區別:
LinkedHashMap是比HashMap多了一個鏈表的結構。與HashMap相比LinkedHashMap維護的是一個具有雙重鏈表的HashMap,LinkedHashMap支持2中排序一種是插入排序,一種是使用排序,最近使用的會移至尾部例如 M1 M2 M3 M4,使用M3后為 M1 M2 M4 M3了,LinkedHashMap輸出時其元素是有順序的,而HashMap輸出時是隨機的,如果Map映射比較復雜而又要求高效率的話,最好使用LinkedHashMap,但是多線程訪問的話可能會造成不同步,所以要用Collections.synchronizedMap來包裝一下,從而實現同步。另外,LinkedHashMap可以實現快速的查詢第一個元素(First)跟結尾(Last)。
三、TreeMap:
TreeMap取出來的是排序后的鍵值對。但如果您要按自然順序或自定義順序遍歷鍵,那么TreeMap會更好 。