• 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值

  • 相关阅读:
    [ERROR]SFTP is not available
    [BTS] Loading property information list by namespace failed or property not found in the list. Verify that the schema is deployed properly.
    IBatisNet系列执行存储过程
    NickLee.FortuneBase数据库sql server修正版
    NickLee.FortuneBase数据库sql server版新增页面详细说明
    实战CRM系统项目:1.需求分析
    项目实战之CRM系统(一)前言
    ASP.NET基础权限系统
    NickLee.FortuneBase数据库sql server版新增页面视频演示
    NickLee.FortuneBase数据库sql server版工具篇
  • 原文地址:https://www.cnblogs.com/zhuifeng-mayi/p/10136768.html
Copyright © 2020-2023  润新知