我正在寻找具有键-值关联的Java类,但不使用哈希。这是我目前正在做的事情:
Hashtable
Hashtable.entrySet()
Map.Entry
Module
JPanel
我会为此使用ArrayListor Vector,但是稍后在代码中,我需要获取Module给定Key 的对象,而无法使用ArrayListor进行操作Vector。
ArrayListor Vector
Key
ArrayListor
Vector
有谁知道一个免费的/开源的Java类可以做到这一点,还是一种从添加值中获取值的方式Hashtable?
我建议一个LinkedHashMap或一个TreeMap。A LinkedHashMap保持键的插入顺序,而a TreeMap则通过元素Comparator或Comparable元素的自然顺序进行排序。
LinkedHashMap
A LinkedHashMap
a TreeMap
Comparator
Comparable
由于不必对元素进行排序,LinkedHashMap因此在大多数情况下应更快。TreeMap有O(log n)表现为containsKey,get,put,和remove,根据的Javadoc,而LinkedHashMap是O(1)对每个。
containsKey
get
put
remove
Javadoc
O(1)
如果你的API仅期望可预测的排序顺序,而不是特定的排序顺序,请考虑使用这两个类实现的接口,NavigableMap或SortedMap。这样一来,你就不会将特定的实现泄漏到你的API中,之后便可以随意切换到这些特定的类或完全不同的实现。
NavigableMap
SortedMap