Map集合

1.Map集合类型
  • Map :存储的键值对映射关系,根据key找到value

  • HashMap:(1)采用哈希表存储结构(2)优点:添加,查询,删除速度快(3)缺点:key无序

  • LinkedHashMap:采用哈希表和链表存储结构(2)key有序(添加顺序)

  • TreeMap:(1)采用二叉树(红黑树)的存储结构(2)Key有序(自然顺序),按照内容查询的速度比List快(3)缺点:查询速度没有HashMap快

2.Map基本方法
package com.zhang.map;

import java.util.*;

/**
 * HashMap:哈希表
 * Key唯一,无序--HashSet,value不唯一,无序--Collection   存在相同的key时,后面的value会覆盖前面的value
 * LinkedHashMap:哈希表+链表
 * Key唯一,有序(添加顺序)--LinkedHashSet,value不唯一,无序--Collection   存在相同的key时,后面的value会覆盖前面的value
 * TreeMap:红黑树
 * Key唯一,有序(自然顺序--TreeSet),value不唯一,无序--Collection   存在相同的key时,后面的value会覆盖前面的value
 * 
 * Set和Map的关系:
 * 如果Map中只存Key,不存Value,就是对应的Set
 * Set就是对应Map的Key的集合
 * 
 * Map的方法:
 * map.put("us","America") 存入键值对
 * map  获取键值对集合  {jp=Japan, uk=England, en=England, cn=China, us=America}
 * map.entrySet()  获取键值对集合  [jp=Japan, uk=England, en=England, cn=China, us=America]
 * map.get("jp") 找到Key:jp对应的value  Japan
 * map.keySet()  获取所有的Key,返回Set类型 [jp, uk, en, cn, us]
 * map.values()  获取所有的values,返回Collection类型 [Japan, England, England, China, America]
 * 遍历map:Set<Map.Entry<String, String>> entrySet = map.entrySet();
 */
public class MapDemo01 {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<String, String>();
        map.put("cn", "China");
        map.put("jp", "Japan");
        map.put("us", "the United States");
        map.put("us", "America");
        map.put("uk", "England");
        map.put("en", "England");

        System.out.println(map.size());//5
        System.out.println(map);//{jp=Japan, uk=England, en=England, cn=China, us=America}
        System.out.println(map.entrySet());//[jp=Japan, uk=England, en=England, cn=China, us=America]
        System.out.println(map.get("jp"));//Japan
        System.out.println(map.get("A"));//null
        System.out.println(map.keySet());//[jp, uk, en, cn, us]
        System.out.println(map.values());//[Japan, England, England, China, America]


        Map<String, String> map1 = new LinkedHashMap<String, String>();
        map1.put("cn", "China");
        map1.put("jp", "Japan");
        map1.put("us", "the United States");
        map1.put("us", "America");
        map1.put("uk", "England");
        map1.put("en", "England");

        System.out.println(map1.size());//5
        System.out.println(map1);//{cn=China, jp=Japan, us=America, uk=England, en=England}
        System.out.println(map1.entrySet());//[cn=China, jp=Japan, us=America, uk=England, en=England]
        System.out.println(map1.get("jp"));//Japan
        System.out.println(map1.get("A"));//null
        System.out.println(map1.keySet());//[cn, jp, us, uk, en]
        System.out.println(map1.values());//[China, Japan, America, England, England]

        Map<String, String> map2 = new TreeMap<String, String>();
        map2.put("cn", "China");
        map2.put("jp", "Japan");
        map2.put("us", "the United States");
        map2.put("us", "America");
        map2.put("uk", "England");
        map2.put("en", "England");

        System.out.println(map2.size());//5
        System.out.println(map2);//{cn=China, en=England, jp=Japan, uk=England, us=America}
        System.out.println(map2.entrySet());//[cn=China, en=England, jp=Japan, uk=England, us=America]
        System.out.println(map2.get("jp"));//Japan
        System.out.println(map2.get("A"));//null
        System.out.println(map2.keySet());//[cn, en, jp, uk, us]
        System.out.println(map2.values());//[China, England, Japan, England, America]

        System.out.println("=============遍历==============");
        //遍历
        //方法一:得到所有Key组成的Set
        Set<String> keySet = map.keySet();//获取所有的Key
        for (String key : keySet) {
            System.out.println(key + "--->" + map.get(key));
        }
        //运行结果:
        //jp--->Japan
        //uk--->England
        // en--->England
        // cn--->China
        //us--->America

        //方法二:得到所有Entry(Entry:哈希表或红黑树的一个节点)组成的Set集合 ,返回Set<Map.Entry<K, V>>
        Set<Map.Entry<String, String>> entrySet = map.entrySet();
        System.out.println(entrySet);//[jp=Japan, uk=England, en=England, cn=China, us=America]
        Iterator<Map.Entry<String, String>> iterator = entrySet.iterator();
        while (iterator.hasNext()) {
            Map.Entry<String, String> next = iterator.next();
            //System.out.println(next);
            // jp=Japan
            // uk=England
            // en=England
            // cn=China
            // us=America
            System.out.println(next.getKey() + ":" + next.getValue());
            //jp:Japan
            //uk:England
            //en:England
            //cn:China
            //us:America
        }

    }
}

posted @ 2021-07-25 22:28  wlbsm  阅读(41)  评论(0编辑  收藏  举报