zoukankan      html  css  js  c++  java
  • 33、Map简介

    Map接口概述

    除了Collection之外,常用的集合还有Map接口,里面常用的实现类图如下:

    map中的元素是以键-值的方式存在的,通过键可以获取到值,键是不可以重复的,跟地图比较像,通过一个坐标就可以找到具体的位置。

    package com.sutaoyu.Map;
    
    import java.util.Collection;
    import java.util.HashMap;
    import java.util.Map;
    
    public class Map_test_1 {
        public static void main(String[] args) {
            Map<Integer,String> map = new HashMap();
            String s1 = map.put(1001, "成龙");
            map.put(1002, "周润发");
            map.put(1003, "周星驰");
            
            //将1001 成龙替换掉,并且返回被替换的成龙
            String s2 = map.put(1001, "房祖名");
            
            System.out.println(s1);
            System.out.println(s2);
            
            //判断是否包含传入的键
            System.out.println(map.containsKey(1002));
            
            //判断是否包含传入的值
            System.out.println(map.containsValue("周星驰"));
            
            //获取map的大小
            System.out.println(map.size());
            
            //将map中的值返回
            Collection<String> c = map.values();
            System.out.println(c);
            System.out.println(map);
            
            //删除键是1001的数据并且将值返回
            
            String s3 = map.remove(1001);
            System.out.println(s3);
        }
    }

    Map的遍历

    方式一:Map中的keySet()返回的是一个包含所有键的Set类型的对象,通过键获取值

    package com.sutaoyu.Map;
    
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Set;
    
    public class Map_test_2 {
        public static void main(String[] args) {
            Map<Integer, String> map = new HashMap<>();
            map.put(1001, "成龙");
            map.put(1002, "周润发");
            map.put(1003, "周星驰");
            map.put(1004, "刘德华");
    
            // 通过键获取值
            String s = map.get(1004);
            System.out.println(s);
            
            // 获取map中所有的键返回给Set
            Set<Integer> keySet = map.keySet();
            
            //遍历set获取键,根据键获取值
            Iterator<Integer> iter = keySet.iterator();
            while(iter.hasNext()) {
                Integer key = (Integer)iter.next();
                System.out.println("键:" + key + ",值:" + map.get(key));
            }
            
            ////使用增强for循环遍历
            for(Integer key : map.keySet()) {
                System.out.println("键:" + key + ",值:" + map.get(key));
            }
        }
    }

    方式二:Map中的键和值被封装成了Entry对象,并存储在Set集合中,通过entrySet()可以获取到这个Set集合。

    package com.monkey1024.map;
    
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.Set;
    
    /**
     * Map的遍历
     *
     */
    public class MapTest03 {
    
        public static void main(String[] args) {
            Map<Integer, String> map = new HashMap<>();
            map.put(1001, "成龙");
            map.put(1002, "周润发");
            map.put(1003, "周星驰");
            map.put(1004, "刘德华");
    
            //键和值被封装成了Entry对象,并存储在Set集合中
            Set<Map.Entry<Integer,String>> entrySet = map.entrySet();
            Iterator<Map.Entry<Integer,String>> it = entrySet.iterator();
            while(it.hasNext()) {
                //获取每一个Entry对象
                Entry<Integer,String> en = it.next();    
                //根据键值对对象获取键
                Integer key = en.getKey();        
                //根据键值对对象获取值
                String value = en.getValue();    
                System.out.println("键:" + key + ",值:" + value);
            }
    
    
            //增强for循环
            for (Entry<Integer, String> en : map.entrySet()) {
                System.out.println("键:" + en.getKey() + ",值:" + en.getValue());
            }
        }
    }

    LinkedHashMap

    LinkedHashMap的特点:存取顺序一致

    package com.monkey1024.map;
    
    import java.util.LinkedHashMap;
    
    /**
     * LinkedHashMap简介
     *
     */
    public class MapTest04 {
    
        public static void main(String[] args) {
            LinkedHashMap<Integer,String> lhm = new LinkedHashMap<>();
            lhm.put(1003, "周星驰");
            lhm.put(1004, "刘德华");
            lhm.put(1001, "成龙");
            lhm.put(1002, "周润发");
    
            System.out.println(lhm);
        }
    }

    TreeMap

    TreeMap的特点:可以对存储的元素进行排序

    package com.monkey1024.map;
    
    import java.util.TreeMap;
    
    /**
     * TreeMap简介
     *
     */
    public class MapTest05 {
    
        public static void main(String[] args) {
            TreeMap<Integer,String> tm = new TreeMap<>();
            tm.put(1003, "周星驰");
            tm.put(1004, "刘德华");
            tm.put(1001, "成龙");
            tm.put(1002, "周润发");
    
            System.out.println(tm);
        }
    }

    HashMap和Hashtable的区别

    Hashtable是JDK1.0版本出现的,是线程安全的,效率低,不可以存储null键和null值
    HashMap是JDK1.2版本出现的,可以存储null键和null值

  • 相关阅读:
    周报说明8-4
    周报7-28
    日志-maven-c监控 周报7-21
    证明创建runnable实例和普通类时间一样长, 其实吧
    UE4开始之路
    js简单框架设计
    json中key为数字会自动排序问题
    u3动画
    工厂模式
    单例模式
  • 原文地址:https://www.cnblogs.com/zhuifeng-mayi/p/10136768.html
Copyright © 2011-2022 走看看