【问题标题】:Java data structure sorted by key按键排序的Java数据结构
【发布时间】:2013-06-19 17:18:37
【问题描述】:

我正在尝试将整数存储在以字符串为键的数据结构中, 我存储的一个例子是:

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

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

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

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));
}

这个输出:

Name2: 124
Name1: 123

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

【问题讨论】:

标签: java sorting data-structures


【解决方案1】:

除非另有说明,maps/hashmaps/hashtables/dictionaries/etc.没有任何定义的排序顺序。 TreeMap&lt;String, Integer&gt; 应该适合您的目的;它实现了SortedMap&lt;K, V&gt; 接口。

也就是说,我不一定认为您应该仅仅因为它使打印更容易而选择数据结构。


旁注:DictionaryHashtable 是遗留类,其存在主要是为了向后兼容。对于通用键值数据结构,新代码通常应该首选 MapHashMap

【讨论】:

  • 您应该提及SortedMapNavigableMap 接口,它们确实指定了排序。
  • 打印不是唯一的原因,我也需要它来覆盖重复的条目,我很确定大多数地图都会这样做
  • @clairharrison 正确 - Map 的任何正确实现都将禁止重复键。
猜你喜欢
  • 1970-01-01
  • 2015-08-13
  • 2022-01-22
  • 2022-08-06
  • 2015-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多