Java容器之Map.Entry详解及遍历Map方法

本文详细解析了Java中Map接口及其内部接口Entry的功能与用法,介绍了Map.Entry如何表示键值对,展示了Map接口的源码,并提供了四种遍历Map的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Map中的Entry是什么?

Map是java中的接口,Map.Entry是Map的一个内部接口。

Map提供了一些常用方法,如keySet()、entrySet()等方法。

keySet()方法返回值是Map中key值的集合;entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry。

Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry<K,V>。它表示Map中的一个实体(一个key-value对)。接口中有getKey(),getValue等方法

Entry是Map中用来保存一个键值对的,而Map实际上就是多个Entry的集合。Entry<key,value>和Map<key,value>一样的理解方式就OK了

2.Map接口中的子接口Entry源码如下

package java.util;

public interface Map<K,V> {

    int size();

    boolean isEmpty();

    boolean containsKey(Object key);

    boolean containsValue(Object value);

    V get(Object key);

    V put(K key, V value);

    V remove(Object key);

    void putAll(Map<? extends K, ? extends V> m);

    void clear();

    Set<K> keySet();

    Collection<V> values();

    Set<Map.Entry<K, V>> entrySet();

    interface Entry<K,V> {
        /**
        * 返回与此项相对应的键
        */
        K getKey();
        /**
        * 返回与此项相对应的值
        */
        V getValue();
        /**
        * 设置与此项相对应的值
        */
        V setValue(V value);
        /**
        * 将指定的对象与此项比较
        */
        boolean equals(Object o);
        /**
        * 获取哈希码
        */
        int hashCode();
    }
    boolean equals(Object o);
    int hashCode();
}

3.遍历Map的四种方法

Map<String, String> map = new HashMap<String, String>();    
  map.put("key1", "value1");    
  map.put("key2", "value2");    
  map.put("key3", "value3");    
      
  //第一种:普遍使用,二次取值    
  System.out.println("通过Map.keySet遍历key和value:");    
  for (String key : map.keySet()) {    
   System.out.println("key= "+ key + " and value= " + map.get(key));    
  }    
      
  //第二种    
  System.out.println("通过Map.entrySet使用iterator遍历key和value:");    
  Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();    
  while (it.hasNext()) {    
   Map.Entry<String, String> entry = it.next();    
   System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());    
  }    
      
 //第三种:推荐,尤其是容量大时</span>    
  System.out.println("通过Map.entrySet遍历key和value");    
  for (Map.Entry<String, String> entry : map.entrySet()) {    
   System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());    
  }    
    
  //第四种    
  System.out.println("通过Map.values()遍历所有的value,但不能遍历key");    
  for (String v : map.values()) {    
   System.out.println("value= " + v);    
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值