我正在java中寻找一个具有键值关联但不使用哈希的类。这是我目前正在做的事情:
- 将值添加到
Hashtable
.
- 获取一个迭代器
Hashtable.entrySet()
.
- Iterate through all values and:
- Get a
Map.Entry
对于迭代器。
- 创建一个类型的对象
Module
(自定义类)基于值。
- 将类添加到 JPanel。
- 显示面板。
问题是我无法控制取回值的顺序,因此我无法按给定的顺序显示值(无需对顺序进行硬编码)。
我会用一个ArrayList
or Vector
为此,但稍后在代码中我需要抓住Module
给定 Key 的对象,我不能用ArrayList
or Vector
.
有谁知道有一个免费/开源的 Java 类可以做到这一点,或者从 a 中获取值的方法Hashtable
基于它们添加的时间?
Thanks!
我建议一个LinkedHashMap http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMap.html or a TreeMap http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html. A LinkedHashMap
保持按键插入的顺序,同时TreeMap
通过a保持排序Comparator
或自然的Comparable
键的顺序。
由于它不必保持元素排序,LinkedHashMap
大多数情况下应该更快;TreeMap
has O(log n)
性能为containsKey
, get
, put
, and remove
,根据 Javadocs,同时LinkedHashMap
is O(1)
对于每个。
如果您的 API 仅需要可预测的排序顺序,而不是特定的排序顺序,请考虑使用这两个类实现的接口,NavigableMap http://docs.oracle.com/javase/7/docs/api/java/util/NavigableMap.html or SortedMap http://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html。这将使您不会将特定的实现泄漏到您的 API 中,并在之后随意切换到这些特定的类或完全不同的实现。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)