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

2022-08-31 06:34:57

有没有一种优雅的方法,如果密钥未知,则无需迭代即可从HashMap中获取一个。Entry<K,V>

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

hashMapObject.get(zeroth_index);

虽然我知道不存在这样的get by index方法。

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

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

欢迎提出建议。

编辑:请建议任何其他数据结构以满足您的需求。


答案 1

地图没有排序,因此没有“第一个条目”这样的东西,这也是为什么在(或)上没有按索引获取方法的原因。MapHashMap

你可以这样做:

Map<String, String> map = ...;  // wherever you get this from

// Get the first entry that the iterator returns
Map.Entry<String, String> entry = map.entrySet().iterator().next();

(注意:检查省略的空地图)。

您的代码不会获取映射中的所有条目,它会立即返回(并中断循环),并找到第一个条目。

打印第一个元素的键和值:

System.out.println("Key: "+entry.getKey()+", Value: "+entry.getValue());

注意:调用并不意味着您正在迭代整个地图。iterator()


答案 2

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

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

TreeMap有一个开销,所以HashMap更快,但只是作为替代解决方案的一个例子。