我正在寻找具有键值关联但不使用散列的 java 类。这是我目前正在做的事情:
Hashtable
Hashtable.entrySet()
Map.Entry
Module
这样做的问题是我无法控制取回值的顺序,因此我无法以给定的顺序显示值(没有对顺序进行硬编码)。
我会为此使用ArrayListor Vector,但稍后在代码中我需要获取Module给定 Key 的对象,而我无法使用ArrayListor来做到这一点Vector。
ArrayList
Vector
有谁知道可以做到这一点的免费/开源 Java 类,或者Hashtable根据添加时间从 a 中获取值的方法?
谢谢!
我建议一个LinkedHashMap或一个TreeMap。ALinkedHashMap保持键的插入顺序,而 aTreeMap保持通过 aComparator或元素的自然Comparable顺序排序。
LinkedHashMap
TreeMap
Comparator
Comparable
由于它不必保持元素排序,LinkedHashMap因此在大多数情况下应该更快;根据 Javadocs,TreeMap具有、、 和的O(log n)性能containsKey,而对于每个。get``put``remove``LinkedHashMap``O(1)
O(log n)
containsKey
get``put``remove``LinkedHashMap``O(1)
如果您的 API 只需要可预测的排序顺序,而不是特定的排序顺序,请考虑使用这两个类实现的接口,NavigableMap或者SortedMap. 这将允许您不会将特定实现泄漏到您的 API 中,并在之后随意切换到这些特定类或完全不同的实现。
NavigableMap
SortedMap