從HashMap獲取第一個鍵和值
瀏覽人數:430最近更新:
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上獲得。
本作品係原創或者翻譯,採用《署名-非商業性使用-禁止演繹4.0國際》許可協議