zoukankan      html  css  js  c++  java
  • day18 Java学习(Map集合)

    集合框架(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( ):返货集合中键值对的个数

       

    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集合的遍历)

    第一种遍历(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() );        //通过键值对对象拿到键和值
               }
    
    }
    实例
        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
        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集合
        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));
            }
        }
    统计字符串中每个字符出现次数

                               

    
    
  • 相关阅读:
    Vijos Oct.28 NOIP2012模拟赛
    QBXT day3 圆盘自动机 游戏 方块
    QBXT day2 最近点对 最长路径 山峰
    1609: [Usaco2008 Feb]Eating Together麻烦的聚餐
    1617: [Usaco2008 Mar]River Crossing渡河问题
    委托的Lambda表达式
    值转换器IValueConverter
    Silverlight中遇到的一些问题
    匿名方法
    Silverlight中的Binding
  • 原文地址:https://www.cnblogs.com/feng0001/p/10941563.html
Copyright © 2011-2022 走看看