[英]How preserve order of LinkedHashMap while serializing to GWT AutoBean?
我已經嘗試使用Map
, HashMap
和LinkedHashMap
作為AutoBean工廠的類型,並且總是在序列化后更改初始元素順序。
我不想發送將保存訂單數據的額外ArrayList
。 有沒有辦法強制AutoBean在Map
保持順序?
http://docs.oracle.com/javase/6/docs/api/java/util/Map.html
地圖的順序被定義為其中在地圖上的集合視圖迭代返回元素的順序。 一些地圖實現,比如TreeMap類,對它們的順序做出了特定的保證; 其他人,比如HashMap類,沒有。
GWT不會對基於Map
的類進行任何更改。 由於性能原因, Map
及其許多子類不保持插入順序。 LinkedHashMap
按設計確實保持其插入順序。 也就是說,當然,假設您從 LinkedHashMap
開始 ,而不是從另一種類型的Map
構建它,這可能在插入過程中實際上不保留其順序,導致LinkedHashMap
具有與您期望的不同的順序。
我想知道為什么你需要保留初始訂單,為什么你使用Map
如果這是你想要的?
顯然,至少在GWT 2.4中,GWT中的LinkedHashMap.clone()
返回一個HashMap
,與純Java行為相反。 AutoBean可能依賴於clone(),最終搞砸了訂單。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.