1. Map集合概述和特点

  • Map接口概述

    • 查看API可以知道:

      • 将键映射到值的对象

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

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

    • 接口 Map<K,V>

      • 类型参数:

        • K - 此映射所维护的键的类型

        • V - 映射值的类型

    • 此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口。
  • Map接口和Collection接口的不同

    • Map是双列的,Collection是单列的

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

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

 

2. Map集合的功能概述

  • Map集合的功能概述

    • 添加功能

      • V put(K key,V value):添加元素。

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

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

    • 删除功能

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

      • V remove(Object key):根据键删除键值对元素,并把值返回

    • 判断功能

      • boolean containsKey(Object key):判断集合是否包含指定的键

      • boolean containsValue(Object value):判断集合是否包含指定的值

      • boolean isEmpty():判断集合是否为空

    • 获取功能

      • Set<Map.Entry<K,V>> entrySet():

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

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

      • Collection<V> values():获取集合中所有值的集合

    • 长度功能

      • int size():返回集合中的键值对的个数

    • package com.heima.map;
      
      import java.util.Collection;
      import java.util.HashMap;
      import java.util.Map;
      import java.util.Set;
      
      public class Demo1_Map {
      
          /**
           Map集合的功能概述
      
              1. 添加功能
                  V put(K key,V value):添加元素。
                      如果键是第一次存储,就直接存储元素,返回null
                      如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值
      
              2. 删除功能
                  void clear():移除所有的键值对元素
                  V remove(Object key):根据键删除键值对元素,并把值返回
      
              3. 判断功能
                  boolean containsKey(Object key):判断集合是否包含指定的键
                  boolean containsValue(Object value):判断集合是否包含指定的值
                  boolean isEmpty():判断集合是否为空
      
              4. 获取功能
                  Set<Map.Entry<K,V>> entrySet():
                      V get(Object key):根据键获取值
                      Set<K> keySet():获取集合中所有键的集合
                      Collection<V> values():获取集合中所有值的集合
      
              5. 长度功能
                  int size():返回集合中的键值对的个数
           */
          public static void main(String[] args) {
      //        demo1();
      //        demo2();
      //        demo3();
              demo4();
              
          }
      
          public static void demo4() {
              Map<String, Integer> map = new HashMap<>();
              map.put("Ann",23);
              map.put("Bill",24);
              map.put("Carolle",25);
              map.put("Dell",21);
              
              Collection<Integer> v_set = map.values();  // 获取集合中所有值的集合
              System.out.println(v_set);
              
              Set<String> k_set = map.keySet();  // 获取集合中所有键的集合
              System.out.println(k_set);
              
              System.out.println(map.size());   // 返回集合中的键值对的个数
          }
      
          public static void demo3() {
              Map<String, Integer> map = new HashMap<>();
              map.put("Ann",23);
              map.put("Bill",23);
              map.put("Carolle",23);
              map.put("Dell",23);
              
              boolean b1 = map.containsKey("Dell");  // 判断集合是否包含指定的键
              boolean b2 = map.containsValue(23);  // 判断集合是否包含指定的值
              System.out.println(b1);
              System.out.println(b2);
          }
      
          public static void demo2() {
              Map<String, Integer> map = new HashMap<>();
              map.put("Ann",23);
              map.put("Bill",23);
              map.put("Carolle",23);
              map.put("Dell",23);
              
              Integer v1 = map.remove("Dell");
              System.out.println(v1);  // 返回删除键对应的值
              System.out.println(map);
              
              map.clear(); // 清空键值对
              System.out.println(map);
          }
      
          public static void demo1() {
              Map<String, Integer> map = new HashMap<>();
              Integer v1 = map.put("Ann", 23);  // 若key不存在,则返回null
              Integer v2 = map.put("Bill", 13);
              Integer v3 = map.put("Carolle", 33);
              Integer v4 = map.put("Dell", 43);
              Integer v5 = map.put("Mary", 25);
              Integer v6 = map.put("Ann", 28);  // 重新设置键为 Ann的,值覆盖,返回覆盖的值
              
              System.out.println(v1);
              System.out.println(v2);
              System.out.println(v3);
              System.out.println(v4);
              System.out.println(v5);
              System.out.println(v6);
              System.out.println(map);
          }
      
      }
      View Code

相关文章: