zoukankan      html  css  js  c++  java
  • Map集合概述和特点

      A:Map集合概述和特点(Set底层依赖的是Map)

    • 将键映射到值的对象
    • 一个映射不能包含重复的键
    • 每个键最多只能映射到一个值

    B:Map接口和Collection接口的不同

    • Map是双列的(是双列集合的根接口),Collection是单列的(是单列集合的根接口)
    • Map的键唯一,Collection的子体系Set是唯一的
    • Map集合的数据结构值针对键有效,跟值无关;如:TreeMap:键是用二叉树算法,HashMap:键是hash算法, Collection集合的数据结构是针对元素有效

    图解:

    map

    Map集合的功能概述

       a:添加元素功能

    • V put(K key,V value):添加元素。
    • 如果键是第一次存储,就直接存储元素,返回null
    • 如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值

       b:删除元素功能

    • void clear():移除所有的键值对元素
    • V remove(Object key):根据键删除键值对元素,并把值返回

       c:判断功能

    • boolean containsKey(Object key):判断集合是否包含指定的键
    • boolean containsValue(Object value):判断集合是否包含指定的值
    • boolean isEmpty():判断集合是否为空

        d:获取元素功能

    • Set<Map.Entry<K,V>> entrySet():
    • V get(Object key):根据键获取值
    • Set<K> keySet():获取集合中所有键的集合
    • Collection<V> values():获取集合中 * int size():返回集合中的键值对的个数所有值的集合
    package online.msym.map;
    import java.util.Collection;
    import java.util.HashMap;
    import java.util.Map;
    public class Demo1_Map {    
        public static void main(String[] args) {
            //demo1();//添加数据
            //demo2();//删除数据,判断是否包含键或者值
            demo3();//获取map中的所有的值
        }
        private static void demo3() {
            Map<String, Integer> map = new HashMap<>();
            map.put("张三", 23);
            map.put("李四", 24);
            map.put("王五", 25);
            map.put("赵六", 26);
            
            Collection<Integer> c = map.values();
            System.out.println(c);
            System.out.println(map.size());
        }
        public static void demo2() {
            Map<String, Integer> map = new HashMap<>();
            map.put("张三", 23);
            map.put("李四", 24);
            map.put("王五", 25);
            map.put("赵六", 26);
            
            //Integer value = map.remove("张三");                //根据键删除元素,返回键对应的值
            //System.out.println(value);
            System.out.println(map.containsKey("张三"));        //判断是否包含传入的键
            System.out.println(map.containsValue(100));        //判断是否包含传入的值
            System.out.println(map);
        }
        public static void demo1() {
            Map<String, Integer> map = new HashMap<>();
            Integer i1 = map.put("张三", 23);//存入的过程先判断有没有"张三",没有就添加,有就覆盖,返回的是被覆盖的部分
            Integer i2= map.put("李四", 24);
            Integer i3 = map.put("王五", 25);
            Integer i4 = map.put("赵六", 26);
            Integer i5 = map.put("张三", 26);                    //相同的键不存储,值覆盖,把被覆盖的值返回
            
            System.out.println(map);
            
            System.out.println(i1);
            System.out.println(i2);
            System.out.println(i3);
            System.out.println(i4);
            System.out.println(i5);
        }
    }

    Map集合的遍历之键找值

    A:键找值思路:

    1. 获取所有键的集合
    2. 遍历键的集合,获取到每一个键
    3. 根据键找值

    图解:

    map2

    package online.msym.map;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Set;
    public class Demo2_Iterator {
        /**
         * Map集合没有iterator方法,
         * 根据键获取值
         */
        public static void main(String[] args) {
            //demo1();//使用keySet方法,通过获取所有的键的集合,在遍历此集合,根据键再获取其对应的值
            demo2();
        }
        private static void demo1() {
            Map<String, Integer> map = new HashMap<>();
            map.put("张三", 23);
            map.put("李四", 24);
            map.put("王五", 25);
            map.put("赵六", 26);        
    //        Integer i = map.get("张三");                    //根据键获取值
    //        System.out.println(i);
            
            //获取所有的键
            Set<String> keySet = map.keySet();            //获取所有键的集合
            Iterator<String> it = keySet.iterator();    //获取迭代器
            while(it.hasNext()) {                        //判断集合中是否有元素
                String key = it.next();                    //获取每一个键
                Integer value = map.get(key);            //根据键获取值
                System.out.println(key + "=" + value);
            }        
        }
        //使用增强for循环
        private static void demo2() {
            Map<String, Integer> map = new HashMap<>();
            map.put("张三", 23);
            map.put("李四", 24);
            map.put("王五", 25);
            map.put("赵六", 26);        
            //使用增强for循环遍历
            for(String key : map.keySet()) {            //map.keySet()是所有键的集合
                System.out.println(key + "=" + map.get(key));
            }
        }
    }

    Map集合的遍历之键值对对象找键和值

    A:键值对对象找键和值思路:

    1. 获取所有键值对对象的集合
    2. 遍历键值对对象的集合,获取到每一个键值对对象
    3. 根据键值对对象找键和值

        map3

    package online.msym.map;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.Set;
    public class Demo3_Iterator {
        /**
         * Map集合的第二种迭代,根据键值对对象,获取键和值
         *  A:键值对对象找键和值思路:
            获取所有键值对对象的集合
            遍历键值对对象的集合,获取到每一个键值对对象
            根据键值对对象找键和值
         */
        public static void main(String[] args) {
            //demo1();
            demo2();
        }
        public static void demo1() {
            Map<String, Integer> map = new HashMap<>();
            map.put("张三", 23);
            map.put("李四", 24);
            map.put("王五", 25);
            map.put("赵六", 26);
            
            //Map.Entry说明Entry是Map的内部接口,将键和值封装成了Entry对象,并存储在Set集合中
            Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
            //获取每一个对象
            Iterator<Map.Entry<String, Integer>> it = entrySet.iterator();
            while(it.hasNext()) {
                //获取每一个Entry对象
                Map.Entry<String, Integer> en = it.next();    //父类引用指向子类对象
                //Entry<String, Integer> en = it.next();    //直接获取的是子类对象
                String key = en.getKey();                    //根据键值对对象获取键
                Integer value = en.getValue();                //根据键值对对象获取值
                System.out.println(key + "=" + value);
            }    
        }
        //使用增强for循环进行迭代
        public static void demo2() {
            Map<String, Integer> map = new HashMap<>();
            map.put("张三", 23);
            map.put("李四", 24);
            map.put("王五", 25);
            map.put("赵六", 26);    
            //使用增强for循环进行迭代
            for(Map.Entry<String, Integer> en : map.entrySet()) {
                System.out.println(en.getKey() + "=" + en.getValue());
            }    
        }
    }

    【点击此处回到主页】

  • 相关阅读:
    Chapter 2 Open Book——14
    数据结构和算法[精选]----说明一下这个分类之后的作用
    Chapter 2 Open Book——13
    Chapter 2 Open Book——12
    myeclipse中打开java文件中文乱码
    div+css与table布局
    docker入门实战笔记
    docker常用命令
    ignite学习笔记
    java代码如何发送QQ邮件
  • 原文地址:https://www.cnblogs.com/daimajun/p/6536680.html
Copyright © 2011-2022 走看看