我使用HashMaps存储对的集合,但我还必须确保从第一个json序列化(从Php客户端)到Java HashMap集浏览,键的顺序是一样的
//import com.google.gson.Gson;
//import com.google.common.base.Joiner;
String s = "{\"durant\":\"kevin\", \"james\":\"lebron\",\"harden\":\"james\",\"westbrook\":\"russel\"}";
System.out.println(s);
Gson gson = new Gson();
Type typeOfMap = new TypeToken<Map<String, String>>() {}.getType();
Map<String, String> m = gson.fromJson(s, typeOfMap);
List<String> entries = new ArrayList< String>(m.keySet());
//Collections.sort(entries);
System.out.println(entries);
System.out.println(m.entrySet());
System.out.println( Joiner.on(",").withKeyValueSeparator("").join(m) );
它似乎适用于小的值集,没有再次排序(这里按字母顺序排列),但它是一种可靠的方法吗?可以在json String和Map浏览之间改变顺序吗?
编辑:可能LinkedHashMap更多订单保留?
答案 0 :(得分:2)
LinkedHashMap
维护插入顺序。除此之外,还有各种SortedMap
实施,例如TreeMap
。
答案 1 :(得分:0)
您可以在SO上查看此问题: How does Java order items in a HashMap or a HashTable?
可以给你一个更清晰的画面......
答案 2 :(得分:0)