繁体   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