1.概述
在本教程中,我们将讨论如何在不知道键的情况下HashMap
首先,我们将使用迭代器,然后使用流来获取第一个条目。最后,我们将讨论要获取第一个条目时HashMap
2.使用迭代器
考虑一下我们具有以下HashMap<Integer, String>
:
Map<Integer, String> hashMap = new HashMap<>();
hashMap.put(5, "A");
hashMap.put(1, "B");
hashMap.put(2, "C");
在此示例中,我们将使用iterator
来获取第一个键值对。因此,让我们在HashMap
的entry set
iterator
,并调用next()
方法来检索第一个条目:
Iterator<Map.Entry<Integer, String>> iterator = hashMap.entrySet().iterator();
Map.Entry<Integer, String> actualValue = iterator.next();
Map.Entry<Integer, String> expectedValue = new AbstractMap.SimpleEntry<Integer, String>(1, "B");
assertEquals(expectedValue, actualValue);
3.使用Java流
另一种方法是使用Java Stream API。 entry set
上创建一个流,并调用findFirst()
方法以获取其第一个条目:
Map.Entry<Integer, String> actualValue = hashMap.entrySet()
.stream()
.findFirst()
.get();
Map.Entry<Integer, String> expectedValue = new AbstractMap.SimpleEntry<Integer, String>(1, "B");
assertEquals(expectedValue, actualValue);
4.广告订单有问题
为了解决这个问题,让我们记住如何创建hashMap
,将对5=A
作为第一个条目插入,然后对1=B
进行插入,最后对2=C
进行插入。让我们通过打印HashMap
的内容进行检查:
System.out.println(hashMap);
{1=B, 2=C, 5=A}
如我们所见,排序是不一样的。 HashMap class
实现不能保证插入顺序。
现在让我们向hashMap
添加一个元素:
hashMap.put(0, "D");
Iterator<Map.Entry<Integer, String>> iterator = hashMap.entrySet().iterator();
Map.Entry<Integer, String> actualValue = iterator.next();
Map.Entry<Integer, String> expectedValue = new AbstractMap.SimpleEntry<Integer, String>(0, "D");
assertEquals(expectedValue, actualValue);
如我们所见,第一个条目再次更改(在这种情况下, 0=D
这也证明HashMap
不保证插入顺序。
因此,如果我们想保留订单,则应改用LinkedHashMap
:
Map<Integer, String> linkedHashMap = new LinkedHashMap<>();
linkedHashMap.put(5, "A");
linkedHashMap.put(1, "B");
linkedHashMap.put(2, "C");
linkedHashMap.put(0, "D");
Iterator<Map.Entry<Integer, String>> iterator = linkedHashMap.entrySet().iterator();
Map.Entry<Integer, String> actualValue = iterator.next();
Map.Entry<Integer, String> expectedValue = new AbstractMap.SimpleEntry<Integer, String>(5, "A");
assertEquals(expectedValue, actualValue);
5.结论
在这篇简短的文章中,我们讨论了从HashMap
获取第一个条目的不同方法。
需要注意的最重要一点是HashMap
实现不能保证任何插入顺序。因此,如果我们有兴趣保留插入顺序,则应使用LinkedHashMap
。
该代码示例可从GitHub上获得。
0 评论