A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© tianhaolin 初级黑马   /  2018-11-18 18:36  /  630 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.HashMap和LinkedHashMap
      *HashMap和LinkedHashMap分别是无序和有序的
      *HasTable(了解即可)
           HashTable的低层是一个哈希表,是最早期的双列集合,它是同步的
           HashTable不能存储空值/空键
2.Map接口中常用的方法
    1)V put(K k,V v);
           返回值:如果Key已经存在,则返回旧的Value并将新的Value替换进集合
                  如果Key不存在,则返回null并将Value添加进集合
    2)remove(Object k)
           返回值:如果Key已经存在,则返回删除的Value
                  如果Key不存在,则返回null
    3)V get(Object key)
           返回值:如果Key已经存在,则返回对应的Value
                  如果Key不存在,则返回null
    4)boolean containsKey(Object key)
    5)Map集合的遍历
          *Set<K> keySet() 方法返回一个Set<实现类>对象 再使用V get(Object Key)方法遍历
            示例代码:
[AppleScript] 纯文本查看 复制代码
        public static void main(String[] args) {
            Map<String, Integer> map = new HashMap<>();
            map.put("赵丽颖", 168);
            map.put("杨颖", 161);
            map.put("林志玲", 178);
                    //使用增强for遍历
            for (String key : map.keySet()) {
                System.out.println(key + "身高" + map.get(s));
            }
                        
            System.out.println("=======================");
                    //使用迭代器遍历
            Iterator<String> it = keySet.iterator();
            while(it.hasNext()) {
            String key = it.next();
            System.out.println(key + "=" + map.get(key));
            }  
        }

        
      *Map.Entry<K,V>静态内部接口,使用entrySet返回该接口的实现类的Set集合
          使用增强for遍历
      *Enery:节点 是一个Map接口中的一个静态内部接口
       示例代码:
[JavaScript] 纯文本查看 复制代码
            public static void main(String[] args) {
                
            Map<String, Integer> map = new HashMap<>();
            map.put("赵丽颖", 168);
            map.put("杨颖", 161);
            map.put("林志玲", 178);
                        //使用增强for遍历
            for (Map.Entry<String, Integer> entry : map.entrySet()) {
                System.out.println(entry.getKey()+ "=" + entry.getValue());
            }
        }

               
3.Map接口的练习
        需求: 键盘录入一个字符串, 计算一个字符串中每个字符出现次数
        分析:
         1)使用Scanner获取用户输入的字符串
         2)创建Map集合,key是字符串中的字符,value是字符的个数
         3)遍历字符串,获取每一个字符
         4)使用获取到的字符,去Map集合判断key是否存在 containsKey()
              key存在:
          通过字符(key),获取value(字符个数)
              put(key,++value)把新的value存储到Map集合中
              key不存在:
                     put(key,1)
           5)输出结果
              示例代码:
[AppleScript] 纯文本查看 复制代码
                [mw_shl_code=applescript,true]public static void main(String[] args) {
   //使用Scanner获取用户输入的字符串
                System.out.println("请输入字符串");
                string str = new Scanner(System.in).next();
                char[] chars = str.toCharArray();
   //创建Map集合
                Map<Character,Integer> map = new HashMap<>();
/*使用获取到的字符,去Map集合判断key是否存在 containsKey()

             key存在:
                       通过字符(key),获取value(字符个数)
                       put(key,++value)把新的value存储到Map集合中
              key不存在:
                         put(key,1)
*/
                for (char aChar : chars) {
                    if(!map.containsKey(aChar)) map.put(aChar,1);
                    else map.put(aChar,map.get(aChar)+1);
                    }
                                //遍历集合输出结果
                for (Map.Entry<Character, Integer> entry : map.entrySet()) {
                    System.out.println(entry.getKey()+"出现的次数为"+entry.getValue());
                }
            }[/mw_shl_code]


4.集合接口的静态方法(JDK9)
        1)java.util.List接口:
              static List<E> of(E...e):返回包含指定元素的不可变List集合
        2)java.util.Sst接口:
              static Set<E> of(E...e):返回包含指定元素的不可变Set集合
        3)java.util.Map接口:
              static Set<E> of(K k1,V v1,...):返回包含指定键值对的不可变Map集合
        4)注意事项
              *of方法只适用于List接口,Set接口,不适用于接口的实现类
              *of方法返回值是一个不能改变的集合,集合不能再使用add,put方法添加元素,会抛出异常
              *Set接口和Map接口在调用of方法时,不能有重复的元素,否则会抛出异常
           5)使用of方法快速创建一个可变的集合
              *ArrayList<Integer> arrayList = new ArrayList<>(List.of(1, 2, 3));
              *HashSet<Integer> arrayList = new HashSet<>(List.of(1, 2, 3));
              *HashMap<Integer,String> arrayList = new HashMap<>(List.of(1,"a", 2,"b", 3,"c"));


   
         
        

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马