美文网首页
Java学习Day11

Java学习Day11

作者: JayMeWangGL | 来源:发表于2019-09-26 12:22 被阅读0次

    今日学习内容总结

    • Map集合

    Map集合

    特点:
      1、Map集合是一个双列集合,一个元素包含两个值(一个key,一个value)
      2、Map集合中的元素,key和value的数据类型可以相同也可以不同
      3、Map集合中的元素,key是不允许重复的,value可以重复
      4、Map集合中的元素,key和value是一一对应的

    常用子类:

    • HashMap<K,V>
        特点:
          1、HashMap集合底层是哈希表:查询速度特别快
          2、HashMap集合是一个无序的集合,存取元素的顺序可能不一致

    • LinkedHashMap<K,V>
        特点:
          1、LinkedHashMap集合底层是哈希表+链表
          2、LinkedHashMap集合是一个有序的集合,存取元素的顺序是一致的

    常用方法:

    • public V put(K key, V value): 把指定的键与指定的值添加到Map集合中。
            HashMap<String,String> hashMap =new HashMap<>();
            hashMap.put("a","A");
    
    • public V remove(Object key): 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。
            hashMap.remove("a");
    
    • public V get(Object key) 根据指定的键,在Map集合中获取对应的值。
            System.out.println(hashMap.get("b"));
    
    • boolean containsKey(Object key) 判断集合中是否包含指定的键。
            System.out.println(hashMap.containsKey("c"));
    
    • public Set<K> keySet(): 获取Map集合中所有的键,存储到Set集合中。
            Set<String> key = hashMap.keySet();
            System.out.println(key);
    
            Set<String> set = hashMap.keySet();
            for (String key : set) {
                String value = hashMap.get(key);
                System.out.println(key+"="+value);
            } 
    
    • public Set<Map.Entry<K,V>> entrySet(): 获取到Map集合中所有的键值对对象的集合(Set集合)。
            Set<Map.Entry<String, String>> entries = hashMap.entrySet();
            System.out.println(entries);
    
            Set<Map.Entry<String, String>> entries = hashMap.entrySet();
            for (Map.Entry<String, String> entry : entries) {
                Map.Entry<String, String> entry1 = entry;
                System.out.println(entry1.getKey()+"="+entry1.getValue());
            }
    

    使用HashMap存储自定义类型的键值:
      要保证key值唯一,需要重写自定义类的equals和hashCode方法

    LinkedHashMap:存储有序的元素集合

    Hashtable:键值都不能为null

    • 小练习:输入一个字符串使用Map来计算每个字符出现的次数
    public class mapTest {
        public static void main(String[] args) {
            System.out.println("输入一个字符串");
            Scanner scanner=new Scanner(System.in);
            String str = scanner.next();
            HashMap<Character,Integer> map=new HashMap<>();
            findChar(str,map);
        }
    
        private static void findChar(String str, HashMap<Character, Integer> map) {
            char[] chars = str.toCharArray();
            for (char c : chars) {
                if(map.containsKey(c)){
                    Integer integer = map.get(c);
                    map.put(c,integer+1);
                }
                else {
                    map.put(c,1);
                }
            }
            System.out.println(map);
        }
    

    相关文章

      网友评论

          本文标题:Java学习Day11

          本文链接:https://www.haomeiwen.com/subject/ycskuctx.html