访问HashMap的元素

时间:2013-03-02 07:08:47

标签: java hashmap

我可以单独访问HashMap的第一个和第二个元素吗? 我的意思是,如果我有一个HashMap

Map<Integer, Integer> testMap = new HashMap<Integer, Integer>();
int f = testMap.first();

我知道没有这样的功能,但我怎样才能访问该元素?

6 个答案:

答案 0 :(得分:2)

HashMap无法保持秩序。

  

此课程不保证地图的顺序;在   特别是,它不保证订单将保持不变   随着时间的推移。

Reference

您可以使用维护广告订单的LinkedHashMapTreeMap

LinkedHashMap

  

这个实现与HashMap的不同之处在于它维护了一个   贯穿其所有条目的双向链表。这有联系   list定义迭代排序,通常是顺序   哪些键被插入到地图中(插入顺序)。注意   如果将键重新插入地图,则不会影响插入顺序。   (如果调用m.put(k,v),则将密钥k重新插入到映射m中   m.containsKey(k)将在紧接之前返回true   调用。)

TreeMap

地图根据其键的自然顺序排序,或者根据地图创建时提供的Comparator排序,具体取决于使用的构造函数。

答案 1 :(得分:0)

地图不是有序的,因此没有“第一个条目”这样的东西,这也是为什么在Map(或HashMap)上没有get-by-index方法的原因。

你可以这样做:

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

// Get the first entry that the iterator returns
Map.Entry<Integer, Integer> entry = map.entrySet().iterator().next();
(Note: Checking for an empty map omitted).

你的代码没有得到地图中的所有条目,它会立即返回(并且突破循环)并找到第一个条目。

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

答案 2 :(得分:0)

没有。你不能将HapMap / HashTable存储在Entry(http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Map.Entry.html)的Entry中,它将键和值保存在一起。

你总是可以获得entrySet()的Iterator并访问这些条目。或者尝试获取仅返回密钥集的keySet()。

希望这会有所帮助。

答案 3 :(得分:0)

您可以使用包含LinkedHashMapfirstKey等方法的lastKey。但是对于第二个键,您必须迭代并按顺序获取元素在地图中输入的键< / p>

答案 4 :(得分:0)

HashMap <Integer, Integer> testMap = new HashMap <Integer, Integer> ();
testMap.put (1, 2);
testMap.put (2, 3);
Iterator <Integer> i = testMap.values ().iterator ();
System.out.println ("First element: " + i.next ());
System.out.println ("Second element: " + i.next ());

请注意,由于HashMap不记得添加了哪些订单元素,因此“第一个元素”不一定意味着“首先添加”。

答案 5 :(得分:0)

 Iterator it = testMap.entrySet().iterator();

                    while (it.hasNext()) {
                            Map.Entry pairs = (Map.Entry) it.next();
                           System.out.println("Key"+pairse.getKey());
                          System.out.println("Value"+pairs.getValue());
}