zoukankan      html  css  js  c++  java
  • Map集合

    1:Map
    (1)将键映射到值的对象。

        一个映射不能包含重复的键;每个键最多只能映射到一个值。

           键值对的方式存在
    (2)Map和Collection的区别?

        A:Map 存储的是键值对形式的元素,键唯一,值可以重复。夫妻对
        B:Collection 存储的是单独出现的元素,子接口Set元素唯一,子接口List元素可重复。光棍
    (3)Map接口功能概述
    A:添加功能   put();
    B:删除功能   remove(key);
    C:判断功能   

                containsKey(key);判断是否包含key键

                containsValue(value);判断是否包含值
    D:获取功能

                get(key);

                values();

    E:长度功能

                size();
    (4)Map集合的遍历
       A:键找值
          a:获取所有键的集合
          b:遍历键的集合,得到每一个键
          c:根据键到集合中去找值

      B:键值对对象找键和值
          a:获取所有的键值对对象的集合
          b:遍历键值对对象的集合,获取每一个键值对对象
          c:根据键值对对象去获取键和值
    hashMap 无序唯一
    代码体现:
    Map<String,String> hm = new HashMap<String,String>();

    hm.put("it002","hello");
    hm.put("it003","world");
    hm.put("it001","java");

    //方式1 键找值
    Set<String> set = hm.keySet();
    for(String key : set) {
    String value = hm.get(key);
    System.out.println(key+"---"+value);
    }

    //方式2 键值对对象找键和值
    Set<Map.Entry<String,String>> set2 = hm.entrySet();
    for(Map.Entry<String,String> me : set2) {
    String key = me.getKey();
    String value = me.getValue();
    System.out.println(key+"---"+value);
    }
    (5)案例
    A:统计一个字符串中每个字符出现的次数

    String str="abcdefabcdefabcdef";

    //将字符串转化为字符数组
    char[] c=str.toCharArray();

    //创建map集合
    Map<String,Integer> map=new LinkedHashMap<String,Integer>();

    //遍历字符数组
    for (int i = 0; i < c.length; i++)
    {
    /*已经存在
    * 给value加一
    * 不存在
    * 给集合key值
    * */
    if (map.containsKey(String.valueOf(c[i])))
    {
    //修改
    map.put(String.valueOf(c[i]),map.get(String.valueOf(c[i]))+1);
    }
    else{
    map.put(String.valueOf(c[i]),1);
    }
    }
    //方法一
    Set<Map.Entry<String,Integer>> set=map.entrySet();
    for (Map.Entry<String,Integer> mapkey : set)
    {
    System.out.println(mapkey);
    }

    B:集合的嵌套遍历

    a:多层嵌套

    Map<String,LinkedHashMap<Integer,LinkedHashMap<Integer,String>>> map=new LinkedHashMap<String,LinkedHashMap<Integer,LinkedHashMap<Integer,String>>>();

    LinkedHashMap<Integer,String> map2=new LinkedHashMap<Integer,String>();
    LinkedHashMap<Integer,LinkedHashMap<Integer,String>> map1=new LinkedHashMap<Integer,LinkedHashMap<Integer,String>>();
    map.put("1", map1);
    map1.put(1, map2);
    map2.put(1, "str");
    Set<Map.Entry<String,LinkedHashMap<Integer,LinkedHashMap<Integer,String>>>> set=map.entrySet();
    Set<Entry<Integer,LinkedHashMap<Integer,String>>> set2 = map1.entrySet();
    Set<Entry<Integer,String>> set3 = map2.entrySet();
    for (Map.Entry<String,LinkedHashMap<Integer,LinkedHashMap<Integer,String>>> mapkey : set)
    {System.out.println(mapkey);
    for (Entry<Integer, LinkedHashMap<Integer, String>> map1key : set2)
    {System.out.println(map1key);
    for (Entry<Integer, String> map2key : set3)
    {
    System.out.println(map2key);
    }
    }

    }

    输出结果:

    1={1={1=str}}
    1={1=str}
    1=str

    TreeMap  有序唯一

    TreeMap<Integer,String> map=new TreeMap<Integer, String>(new Comparator() {
    @Override
    public int compare(Object o1, Object o2) {
    return -1;
    }
    });
    map.put(1, "str");
    map.put(2, "str");
    map.put(4, "str");
    map.put(3, "str");
    map.put(5, "str");
    Set<Entry<Integer,String>> set = map.entrySet();
    for (Entry<Integer, String> map2key : set)
    {
    System.out.println(map2key);
    }

    输出:

    5=str
    3=str
    4=str
    2=str
    1=str

    默认排序是升序,加上比较器会按照自己的方式进行排序

  • 相关阅读:
    COGS2355 【HZOI2015】 有标号的DAG计数 II
    COGS2353 【HZOI2015】有标号的DAG计数 I
    COGS2259 异化多肽
    二项式定理
    Codeforces 528D Fuzzy Search
    技术文章阅读-华为WS331a产品管理页面存在CSRF漏洞
    技术文章阅读-天翼创维awifi路由器存在多处未授权访问漏洞
    技术文章阅读-红蓝对抗系列之浅谈蓝队反制红队的手法一二
    技术文章阅读-Solr ReplicationHandler漏洞浅析
    技术文章阅读-记一次edu站点从敏感信息泄露到getshell
  • 原文地址:https://www.cnblogs.com/fjkgrbk/p/mapCollection.html
Copyright © 2011-2022 走看看