您的位置:

Java中HashMap的遍历方法

一、基本介绍

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
     
      > 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
     
      > entrySet = map.entrySet();
//增强for循环遍历
for(Map.Entry
       
        entry : entrySet) { System.out.println("key=" + entry.getKey() + ", value=" + entry.getValue()); } //Iterator遍历 Iterator
        
         
          > iterator = entrySet.iterator(); while(iterator.hasNext()) { Map.Entry
          
           entry = iterator.next(); System.out.println("key=" + entry.getKey() + ", value=" + entry.getValue()); }
          
         
        
       
      
     
    
   

四、小结

以上是Java中HashMap的遍历方法的详细介绍,通过多种遍历方式我们可以灵活的使用HashMap,并能够快速处理HashMap中的数据。