关于排序:按密钥排序的Java数据结构

Java data structure sorted by key

我试图将整数存储在一个数据结构中,以String作为键,
im存储的一个例子是:

1
2
key:"Name1", Int: 123
key:"Name2", Int: 124

我希望能够插入条目,以便按字母顺序排序,以便于打印到屏幕。

到目前为止我一直在使用:

1
2
3
4
5
6
7
8
9
10
Dictionary<String,Integer> x = new Hashtable<String,Integer>();
x.put("Name1",123);
x.put("Name2",124);

Enumeration<String> e;
String key;
for(e=x.keys(); e.hasMoreElements();){
    key=e.nextElement();
    System.out.println(key +":" + x.get(key));
}

此输出:

1
2
Name2: 124
Name1: 123

为什么这些不按字母顺序排列?
是否有我应该知道的字典替代方案?


除非另有说明,否则map / hashmaps / hashtables / dictionaries / etc. 没有任何已定义的排序顺序。 TreeMap应该适合您的目的; 它实现了SortedMap接口。

也就是说,我不一定相信你应该选择数据结构只是因为它使打印更容易。

附注:DictionaryHashtable是遗留类,主要用于向后兼容。 对于通用键值数据结构,新代码通常应优先选择MapHashMap