我有这样的地图:Map<String, Integer>
。地图的关键是一个字符串,它是通过Gson序列化Set<String>
生成的。
我担心Gson可能并不总是将相同的Set<String>
序列化为相同的字符串(项目的顺序可能不同?)。
如果我有Set<String>
并尝试更新/删除该地图中的相应条目,则会造成麻烦。
假设map的键必须是由Gson序列化的Set<String>
字符串。我想知道是否有办法迫使Gson始终将相同的Set<String>
序列化为相同的字符串。
答案 0 :(得分:1)
不,这是不可能的。 HashSet中的顺序不相同。如果您确实希望对它们进行排序,请使用ArrayList并制作自己的序列化程序。
一种丑陋的方式可能是将Keys存储在一个ArrayList中,将值存储在另一个ArrayList中。
但问题仍然存在!!解析JSON对象时,JSON对象中的字段将不按顺序排列。
因此,您不应该依赖于HashMap或JSONObject中的顺序和使用索引。相反,你应该使用密钥。