小编典典

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

all

我正在寻找具有键值关联但不使用散列的 java 类。这是我目前正在做的事情:

  1. 将值添加到Hashtable.
  2. 获取Hashtable.entrySet().
  3. 遍历所有值并:
    1. Map.Entry为迭代器获取一个。
    2. Module根据该值创建一个类型的对象(自定义类)。
    3. 将类添加到 JPanel。
  4. 显示面板。

这样做的问题是我无法控制取回值的顺序,因此我无法以给定的顺序显示值(没有对顺序进行硬编码)。

我会为此使用ArrayListor Vector,但稍后在代码中我需要获取Module给定 Key
的对象,而我无法使用ArrayListor来做到这一点Vector

有谁知道可以做到这一点的免费/开源 Java 类,或者Hashtable根据添加时间从 a 中获取值的方法?

谢谢!


阅读 199

收藏
2022-03-09

共1个答案

小编典典

我建议一个LinkedHashMap或一个TreeMap。ALinkedHashMap保持键的插入顺序,而
aTreeMap保持通过 aComparator或元素的自然Comparable顺序排序。

由于它不必保持元素排序,LinkedHashMap因此在大多数情况下应该更快;根据 Javadocs,TreeMap具有、、 和的O(log n)性能containsKey,而对于每个。get``put``remove``LinkedHashMap``O(1)

如果您的 API
只需要可预测的排序顺序,而不是特定的排序顺序,请考虑使用这两个类实现的接口,NavigableMap或者SortedMap.
这将允许您不会将特定实现泄漏到您的 API 中,并在之后随意切换到这些特定类或完全不同的实现。

2022-03-09