JAVA -----Map接口及遍历

我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图。

Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。

 Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。

 Collection中的集合称为单列集合,Map中的集合称为双列集合。

 需要注意的是,Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。

 Map中常用的集合为HashMap集合、LinkedHashMap集合。

Map接口中常用集合有

       HashMap集合

存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。

     LinkedHashMap集合

存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。

Map接口中常用方法   put()    ,         get()      ,     remove()

package com.cracle.www.demo01;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Demo02 {

    public static void main(String[] args) {
        Map<String,String> map =new HashMap<String,String>();
        //向map中添加数据
        map.put("1", "a");
        map.put("2", "b");
        map.put("2", "z");
        map.put("3", "c");
        //移除
        map.remove("3");        
        //取数据
        System.out.println(map.get("1"));
        System.out.println(map.get("2"));
        System.out.println(map.get("3"));
        //遍历
        //1、keyset();获取Map中的Key所对应的集合。
        Set<String> drt=map.keySet();
        for(String s:drt) {
            String key= s;
            String value = map.get(key);
            System.out.println(key+"..."+value);
        }
        //2、Entry键值对对象
        Set<Map.Entry<String, String>> s1 =map.entrySet();
        for(Map.Entry<String, String> a1:s1) {
            String key=a1.getKey();
            String value = a1.getValue();
            System.out.println(key+"..."+value);
        }
        
    }

}

Map集合遍历

package com.cracle.www.demo01;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class Demo04 {

    public static void main(String[] args) {
        Map<String, String> map = new HashMap<String, String>();
          map.put("1", "value1");
          map.put("2", "value2");
          map.put("3", "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());
          }
          
          //第三种:推荐,尤其是容量大时
          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);
          }
         }
    }
原文地址:https://www.cnblogs.com/time-to-despair/p/9765072.html