拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 从HashMap获取第一个键和值

从HashMap获取第一个键和值

白鹭 - 2021-11-24 476 0 0

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来获取第一个键值对。因此,让我们在HashMapentry 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 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *