[英]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.