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