我尝试使用Map
,HashMap
和LinkedHashMap
作为AutoBean工厂的类型,并且在序列化后始终更改初始元素顺序。
我不想发送包含订单数据的其他ArrayList
。有没有办法强制AutoBean在Map
?
答案 0 :(得分:1)
http://docs.oracle.com/javase/6/docs/api/java/util/Map.html
映射的顺序被定义为迭代器所在的顺序 地图的集合视图返回其元素。一些地图 实现,如TreeMap类,作为特定的保证 他们的订单;其他人,比如HashMap类,不会。
GWT不会对基于Map
的类进行任何更改。由于性能原因,Map
及其许多子类不保持插入顺序。 LinkedHashMap
,按照设计, 保持其插入顺序。也就是说,当然,假设您使用LinkedHashMap
开始而不是从其他类型的Map
构建它,这可能在插入过程中实际上不保留其顺序,从而导致LinkedHashMap
订单的顺序与您期望的顺序不同。
我想知道为什么你需要保留初始订单,为什么你使用Map
如果这是你想要的?
答案 1 :(得分:1)
显然,至少在GWT 2.4中,GWT中的LinkedHashMap.clone()
返回HashMap
,与纯Java行为相反。 AutoBean可能依赖于clone(),最终会破坏顺序。