如何在不迭代的情况下从哈希映射中获取一个条目


172

Entry<K,V>如果密钥未知,是否有一种优雅的方法可以从HashMap中仅获取一个而不进行迭代。

由于进入的顺序并不重要,我们可以这样说吗

hashMapObject.get(zeroth_index);

尽管我知道不存在通过索引获取这种方法。

如果我尝试下面提到的方法,它仍然必须获取hashmap的所有条目集

for(Map.Entry<String, String> entry : MapObj.entrySet()) {
    return entry;
}

欢迎提出建议。

编辑:请提出任何其他数据结构以满足需求。

Answers:


93

Jesper的回答很好。另一种解决方案是使用TreeMap(您要求其他数据结构)。

TreeMap<String, String> myMap = new TreeMap<String, String>();
String first = myMap.firstEntry().getValue();
String firstOther = myMap.get(myMap.firstKey());

TreeMap有开销,因此HashMap更快,但仅作为替代解决方案的一个示例。


或ConcurrentSkipListMap
Stephen Denne

由于某种原因,该firstEntry()方法未在界面中定义,SortedMap而仅在TreeMapand ConcurrentSkipListMap:(
janko

1
firstEntry()在NavigableMap接口中定义。
PerÖstlund'09 -10-2

啊,谢谢,我只看了一下,SortedMap因为它有firstKey()方法。
扬科
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.