一尘不染

实现Map并保持插入顺序的Java类?

java

我正在寻找具有键-值关联的Java类,但不使用哈希。这是我目前正在做的事情:

  1. 将值添加到中Hashtable
  2. 获取的迭代器Hashtable.entrySet()
  3. 遍历所有值和:
  4. Map.Entry为迭代器获取一个。
  5. Module根据该值创建类型的对象(自定义类)。
  6. 将类添加到JPanel
  7. 显示面板。
    这样做的问题是我无法控制获取值的顺序,因此无法按给定顺序显示值(没有对顺序进行硬编码)。

我会为此使用ArrayListor Vector,但是稍后在代码中,我需要获取Module给定Key 的对象,而无法使用ArrayListor进行操作Vector

有谁知道一个免费的/开源的Java类可以做到这一点,还是一种从添加值中获取值的方式Hashtable?


阅读 452

收藏
2020-03-04

共1个答案

一尘不染

我建议一个LinkedHashMap或一个TreeMap。A LinkedHashMap保持键的插入顺序,而a TreeMap则通过元素ComparatorComparable元素的自然顺序进行排序。

由于不必对元素进行排序,LinkedHashMap因此在大多数情况下应更快。TreeMap有O(log n)表现为containsKeygetput,和remove,根据的Javadoc,而LinkedHashMapO(1)对每个。

如果你的API仅期望可预测的排序顺序,而不是特定的排序顺序,请考虑使用这两个类实现的接口,NavigableMapSortedMap。这样一来,你就不会将特定的实现泄漏到你的API中,之后便可以随意切换到这些特定的类或完全不同的实现。

2020-03-04