簡體   English   中英

如何在序列化為GWT AutoBean時保留LinkedHashMap的順序?

[英]How preserve order of LinkedHashMap while serializing to GWT AutoBean?

我已經嘗試使用MapHashMapLinkedHashMap作為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM