day18 Java学习(Map集合)

时间:2023-02-26 10:59:02

集合框架(Map集合)

    Map接口概述:

         * 将键映射到值的对象

         * 一个映射不能包含重复的键

         * 每个键最多只能映射到一个值

     Map接口和Collection接口的不同:

         * Map是双列的,Collection是单列的。

         * Map的键唯一,Collection的子体系Set是唯一的。

         * Map集合的数据结构值针对键有效跟值无关;Collection集合的数据结构是针对元素有效。       

 

  集合框架(Map集合的功能概述)

         添加功能:

                        * put (K key ,Vvalue) :添加元素 

                            * 如果键是第一次存储,就直接存储元素,返回null

                            * 如果键不是第一次,就用值把以前的值替换掉,返回以前的值。

          删除功能:

                        * void  clear( ) :移除所有的键值对元素。

                        * remove( ) :根据键删除键值对元素,并把值返回。

           判断功能:

                         * Boolean containsKey(Object key) :判断集合是否包含传入的键

                         * Boolean containsValue(Object key) :判断集合是否包含传入的值

                         * Boolean  isEmpty( ):判断集合是否为空。

           获取功能:

                         * Set< Map.Entry<K , V> > entrySet( ): 键值对对象集合

                         * get (Object key) : 根据键获取值

                         * Set <K> keySet( ):获取集合中所有值的集合

                         *  Collection<v> values():获取集合中所有值的集合。

            长度功能:

                         * int size( ):返货集合中键值对的个数

 

   

day18 Java学习(Map集合)day18 Java学习(Map集合)
public static void main(String[] args) {
        
        Map<String, Integer> map = new HashMap<>();
        Integer l1 = map.put("张三", 14);
        Integer l2 = map.put("李四", 15);
        Integer l3 = map.put("王五", 16);
        Collection<Integer> c=map.values();           //values():获取集合中所有值的集合。
        // Integer l4 = map.put("张三", 18);           //put()方法: 相同的键不存储,值覆盖,把覆盖的值返回
        // Integer l5=map.remove("张三");              //remove()方法:  根据键删除元素 ,返回键对应的值
        System.out.println(map.containsKey("张三"));   //类.containsKey():判断集合是否包含传入的键
        System.out.println(map.containsValue(16));    //类.containsValue():判断集合是否包含传入的值
        System.out.println(c.size());                 //size():返回集合中键值对的个数。
        System.out.println(c);      
    }
实例

 

  集合框架(Map集合的遍历)

day18 Java学习(Map集合)day18 Java学习(Map集合)
第一种遍历(keySet()):
          public static void main(String[] args) {
    
              Map<String, Integer> map=new HashMap<>();
              map.put("张三", 14);
              map.put("李四", 15);
              map.put("王五", 16);  
            // Integer i=map.get("张三");     //根据键获取值
              
              //获取所有的键
              for (String string : map.keySet()) {     //keySet():获取集合中所有值的集合
                System.out.println(string+"...."+map.get(string));
}
}

第二种遍历(entrySet()):
 public static void main(String[] args) {
              Map<String, Integer> map=new HashMap<>();
              map.put("张三", 14);
              map.put("李四", 15);
              map.put("王五", 16);  
            // Map.Entry说明Entry是Map的内部接口,将键和值封装成Entryd对象,并存储在Set集合中。
         for (Map.Entry<String, Integer> en : map.entrySet() ) {       //en是键值对对象

          System.out.println(en.getKey()+"..."+en.getValue() );        //通过键值对对象拿到键和值
           }

}
实例

 

 

day18 Java学习(Map集合)day18 Java学习(Map集合)
    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        HashMap<Student, String> hm= new HashMap<>();
      hm.put(new Student("张三", 18),"北京");
      hm.put(new Student("李四", 20),"上海");
      hm.put(new Student("王五", 22),"广州");
      
     for (Student string : hm.keySet()) {
         System.out.println("姓名:"+string.getName() +"  "+"年龄:"+string.getAge()+"   "+"地址:"+hm.get(string));
    }
     System.out.println(hm);
    }
HashMap集合键是Student值是String

 

 

day18 Java学习(Map集合)day18 Java学习(Map集合)
    public static void main(String[] args) {
        TreeMap<Student, String> tree = new TreeMap<>();
        tree.put(new Student("张三", 18), "北京");
        tree.put(new Student("李四", 20), "上海");
        tree.put(new Student("王五", 2), "广州");
        for (Student string : tree.keySet()) {
            System.out.println(
                    "姓名:" + string.getName() + "  " + "年龄:" + string.getAge() + "   " + "地址:" + tree.get(string));
        }
        System.out.println(tree);
    }
TreeMap集合

 

day18 Java学习(Map集合)day18 Java学习(Map集合)
    public static void main(String[] args) {
        //统计字符串中每个字符出现次数
        String s = "aaaacccvvvvv";
        char[] arr = s.toCharArray();
        HashMap<Character, Integer> hs = new HashMap<>();
        //遍历字符数组,将字符添加到双列集合中
        for (char c : arr) {
             //如果不包含这个键
            hs.put(c, !hs.containsKey(c) ? 1 : hs.get(c) + 1);
        }
        for (Character key :hs.keySet()) {
            System.out.println(key+"="+hs.get(key));
        }
    }
统计字符串中每个字符出现次数