一、基本介紹
HashMap是Java中十分常用的一種數據結構,在開發和實際應用中也頻繁使用。HashMap是一種基於哈希表的Map接口實現,它允許null值和null鍵,同時它也不保證順序。
HashMap可以進行快速查找和快速插入,它的速度比HashTable要快,但是HashMap是非線程安全的。
HashMap的實現方式是通過Entry數組+單鏈表的方式實現,即當兩個不同的key被計算出的hashCode相同時,它們會被放在同一個桶(bucket)中,通過鏈表方式將它們串聯起來。
二、HashMap的基本遍歷方式
HashMap的遍歷方式常見的有三種,分別是:
1. 使用迭代器Iterator進行遍歷。
2. 使用增強for循環進行遍歷。
3. 使用Lambda表達式進行遍歷。
1. 迭代器Iterator方式
使用Iterator方式進行遍歷,需要通過調用HashMap的entrySet()方法,將Map轉換成Set集合,再通過Set集合獲取Iterator實例進行遍歷。
Map map = new HashMap();
//添加數據
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
Iterator<Map.Entry> iterator = map.entrySet().iterator();
while(iterator.hasNext()) {
Map.Entry entry = iterator.next();
System.out.println("key=" + entry.getKey() + ", value=" + entry.getValue());
}
2. 增強for循環方式
使用增強for循環方式進行遍歷,同樣需要通過調用HashMap的entrySet()方法,將Map轉換成Set集合,然後直接使用增強for循環遍歷。
Map map = new HashMap();
//添加數據
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
for(Map.Entry entry : map.entrySet()) {
System.out.println("key=" + entry.getKey() + ", value=" + entry.getValue());
}
3. Lambda表達式方式
使用Lambda表達式方式進行遍歷,需要在Java 8及以上版本中使用。
Map map = new HashMap();
//添加數據
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
map.forEach((key, value) -> System.out.println("key=" + key + ", value=" + value));
三、HashMap的多種遍歷方式詳解
除了基本的遍歷方式外,HashMap還有一些其他的遍歷方式,在某些特定場景下使用更加高效。
1. 遍歷Key值
我們可以使用HashMap的keySet()方法返回所有key的Set集合,然後通過增強for循環或Iterator進行遍歷所有的key。
Map map = new HashMap();
//添加數據
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
Set keySet = map.keySet();
//增強for循環遍歷
for(String key : keySet) {
System.out.println("key=" + key);
}
//Iterator遍歷
Iterator iterator = keySet.iterator();
while(iterator.hasNext()) {
String key = iterator.next();
System.out.println("key=" + key);
}
2. 遍歷Value值
通過HashMap的values()方法可以返回所有value的Collection集合,然後通過增強for循環或Iterator進行遍歷所有的value。
Map map = new HashMap();
//添加數據
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
Collection values = map.values();
//增強for循環遍歷
for(String value : values) {
System.out.println("value=" + value);
}
//Iterator遍歷
Iterator iterator = values.iterator();
while(iterator.hasNext()) {
String value = iterator.next();
System.out.println("value=" + value);
}
3. 使用Lambda表達式遍歷
通過Lambda表達式方式遍歷HashMap的key和value是最簡單的方式,因為它不需要轉換集合類型。
Map map = new HashMap();
//添加數據
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
//使用Lambda表達式遍歷key和value
map.forEach((key, value) -> System.out.println("key=" + key + ", value=" + value));
4. 遍歷Entry值
Entry是HashMap中的內部類,它包含key和value兩個屬性,使用HashMap中的entrySet()方法可以返回所有的Entry集合,然後通過增強for循環或Iterator進行遍歷所有的Entry。
Map map = new HashMap();
//添加數據
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
Set<Map.Entry> entrySet = map.entrySet();
//增強for循環遍歷
for(Map.Entry entry : entrySet) {
System.out.println("key=" + entry.getKey() + ", value=" + entry.getValue());
}
//Iterator遍歷
Iterator<Map.Entry> iterator = entrySet.iterator();
while(iterator.hasNext()) {
Map.Entry entry = iterator.next();
System.out.println("key=" + entry.getKey() + ", value=" + entry.getValue());
}
四、小結
以上是Java中HashMap的遍歷方法的詳細介紹,通過多種遍歷方式我們可以靈活的使用HashMap,並能夠快速處理HashMap中的數據。
原創文章,作者:EXEGW,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/361145.html