我想使用一组“键 - 值”对:
Object getValueAt(int rowIndex, int columnIndex)
)。集合必须保留元素的顺序。 ArrayList会对此有所帮助。我找到的最接近的可用收藏品是LinkedHashMap。它保留了订单并允许按键检索。但是,索引/位置无法访问项目,我必须遍历项目,直到找到好项目。这不是时间有效的。
有没有比this one更好的? 感谢。
(问题类似于this one,但所提供的解决方案使用转换toArray()
,这不是时间效果。如果对的集合发生变化,则需要再次进行转换。)< / p>
答案 0 :(得分:1)
JRE中没有这样的集合实现。
但是,您可以通过使用Map<K,V>
存储键值对以及按顺序存储键的附加List<K>
来轻松解决此问题。然后,您可以使用密钥或索引访问值:keyValueMap.get(keys.get(index))
。
您必须确保始终在两个集合上同步修改:
if (keyValueMap.put(key, value) == null) keys.add(key)
if (keyValueMap.remove(key) != null) keys.remove(key)
请注意,此实现假定值永远不会null
。如果还需要null
值,则代码会稍微复杂一些,因为我们必须使用keyValueMap.contains(key)
检查是否存在条目。
答案 1 :(得分:0)
如果没有实现自己的集合,最简单的方法就是拥有两个集合,其中键值在第二个集合中相反,但在其他方面的顺序相同。
(希望这是一个评论,但尚未足够的代表)
答案 2 :(得分:0)
Apache Commons Collection有一个ListOrderedMap类,可以满足您的需求。