1. 程式人生 > >關於使用map存放數據亂序”問題“

關於使用map存放數據亂序”問題“

htable 允許 不同 color dict json 線程 tree 遇到

今天做項目中遇到了一個比較低級的錯誤,如果沒註意將會變的更麻煩。。。

其實吧,也不難,要求就是將list中的值轉為map後,再順序輸出map中的值,list的順序怎樣,加入到map的順序也應怎樣,不能亂序!

一開始做之前沒註意那麽多,習慣性使用

1 Map<String,Object> jsonMap = new HashMap<>();

這樣做之後的結果可想而知,雖然說查詢數據快,但數據肯定是亂序的,畢竟它是根據hashcode碼來排序,

之後使用TreeMap,但依然沒有得到想要的結果,而HashTable就更不用說了。

可能是因為當時事多比較急吧,沒考慮那麽多,最後查看了下api之後,才發現可以使用LinkedHashMap才能達到自己想要的效果;

最後來講下HashMap、TreeMap、LinkedHashMap和HashTable四者的區別吧:

1、HashMap中的key的值根據hashcode來排序,無法得到實際中想要的順序,常用來做統計;

2、LinkedHashMap,它內部有一個鏈表,可以保持key插入的順序。叠代的時候,也是按照插入的順序進行叠代,而且叠代的速度比HashMap更快;

3、TreeMap的順序是key的自然順序(如整數從小到大),也可以指定比較函數,但不能保持插入時的順序

4、HashTable與HashMap類似,它繼承自Dictionary類,不同的是:它不允許記錄的鍵或者值為空;它支持線程的同步、即任一時刻只有一個線程能寫Hashtable,因此也導致了Hashtable在寫入時會比較慢。

關於使用map存放數據亂序”問題“