关于java:HashMap,其中键的顺序很重要

HashMap where the order of keys is important

我使用哈希图来存储成对的集合,但我还必须确保从第一个JSON序列化(从PHP客户端)到Java哈希映射集浏览,密钥的顺序将是相同的。

1
2
3
4
5
6
7
8
9
10
11
12
//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字符串和地图浏览之间的顺序可以改变吗?

编辑:也许Linkedhashmap更能保持秩序?


LinkedHashMap维护插入顺序。除此之外,还有各种各样的SortedMap实现,如TreeMap


您可以查看此问题,以便:如何在哈希表或哈希表中排序Java项目?

给你一个更清晰的画面…