集合(20):Map接口

集合(20):Map接口

Map接口与Collection接口有什么区别?
1、Map接口与Collection接口是平级的关系,不存在继承关系,都是属于util包下面的
2、Map集合中存储的元素都是成对出现的,Map元素的键是唯一的,值是可以重复的
键值对有其他的称呼:夫妻对
3、Collection接口中的元素都是单独出现的,Collection接口下面有个子接口Set元素是唯一的
List集合中的元素是可以重复的,像这样单独出现的元素,有其他的称呼:光棍

image

1、Map接口的概述

在API中:Interface Map<K,V>

将键映射到值的对象;一个映射不能包含重复的键;每个键最多只能映射到一个值

<K, V>  键值对(K代表键,V代表值)
举例:
    1001 李玉伟
    1001 李嘉诚(不允许)
    1002 李玉伟(允许)
    在Map集合中,K值不能重复

2、Map接口的成员方法(Map集合的功能)

(1)添加功能:
        V put(K key, V value)//将指定的值与该映射中的指定键相关联
        举例:map.put(1001, "朱佳乐");

(2)删除功能:
        void clear()//从该map中删除所有的映射(清空映射)
        V remove(Object key)//删除一个键的映射

(3)判断功能:
   boolean containsKey(Object key)//如果此映射包含指定键的映射,则返回true
   boolean containsValue(Object value)//如果此映射将一个或多个键映射到指定的值,则返回true
   boolean isEmpty()//如果此map不包含键值映射,则返回 true(注意:是不包含则返回true)

(4)长度功能:
        int size()//返回此集合中键值映射的个数
    
(5)获取功能:
     V get(Object key)//输入指定键的映射,获取指定键所映射的值,如果map中不包含该键,返回的是null
	 Set<K> keySet()//返回此map中包含的键的Set视图(就是获取集合键的映射)
	 Collection<V> values()//返回此地图中包含的值的Collection视图(获取集合键的映射值)
	 Set<Map.Entry<K,V>> entrySet()//返回此map中包含的映射的Set视图(获取所有键值对的集合)
(1)添加功能
public class MapDemo1 {
    public static void main(String[] args) {
        //创建一个Map集合对象,Map属于接口,不能实例化,用它的一个子类创建对象
        HashMap<String, String> ssh = new HashMap<>();

        //添加元素
        //V put(K key, V value)将指定的值与该映射中的指定键相关联
        ssh.put("邓超", "孙俪");//邓超是键的映射,孙俪是该映射的值
        ssh.put("吴京", "谢楠");
        ssh.put("张杰", "谢娜");
        ssh.put("小虎", "冯提莫");
        System.out.println(ssh);
    }
}
            执行结果为:
                        {邓超=孙俪, 吴京=谢楠, 小虎=冯提莫, 张杰=谢娜}

                        Process finished with exit code 0
		//由结果可知,输出结果的顺序和添加的顺序并不是一致的
(2)删除功能①:void clear() //从该map集合中删除所有的映射(清空映射)
public class MapDemo1 {
    public static void main(String[] args) {
        //创建一个Map集合对象,Map属于接口,不能实例化,用它的一个子类创建对象
        HashMap<String, String> ssh = new HashMap<>();

        //添加元素
        //V put(K key, V value)将指定的值与该映射中的指定键相关联
        ssh.put("邓超", "孙俪");
        ssh.put("吴京", "谢楠");
        ssh.put("张杰", "谢娜");
        ssh.put("小虎", "冯提莫");
        System.out.println(ssh);

        System.out.println("===================================");

        //void clear()从该map中删除所有的映射(清空映射)
        ssh.clear();
        System.out.println(ssh);
    }
}
            执行结果如下:
                        {邓超=孙俪, 吴京=谢楠, 小虎=冯提莫, 张杰=谢娜}
                        ===================================
                        {}

                        Process finished with exit code 0

删除功能②:V remove(Object key) //从该map集合中删除一个指定的键的映射
public class MapDemo1 {
    public static void main(String[] args) {
        //创建一个Map集合对象,Map属于接口,不能实例化,用它的一个子类创建对象
        HashMap<String, String> ssh = new HashMap<>();

        //添加元素
        //V put(K key, V value)将指定的值与该映射中的指定键相关联
        ssh.put("邓超", "孙俪");
        ssh.put("吴京", "谢楠");
        ssh.put("张杰", "谢娜");
        ssh.put("小虎", "冯提莫");
        System.out.println(ssh);

        System.out.println("===================================");
		//从该map集合中删除一个指定的键的映射
		ssh.remove("小虎");
        System.out.println(ssh);
    }
}
            执行结果如下:
                        {邓超=孙俪, 吴京=谢楠, 小虎=冯提莫, 张杰=谢娜}
                        ===================================
                        {邓超=孙俪, 吴京=谢楠, 张杰=谢娜}

                        Process finished with exit code 0
(3)判断功能①:boolean containsKey(Object key) 如果此映射包含指定键的映射,则返回true
public class MapDemo1 {
    public static void main(String[] args) {
        //创建一个Map集合对象,Map属于接口,不能实例化,用它的一个子类创建对象
        HashMap<String, String> ssh = new HashMap<>();

        //添加元素
        //V put(K key, V value)将指定的值与该映射中的指定键相关联
        ssh.put("邓超", "孙俪");
        ssh.put("吴京", "谢楠");
        ssh.put("张杰", "谢娜");
        ssh.put("小虎", "冯提莫");
        System.out.println(ssh);

        System.out.println("===================================");
		//从该map集合中删除一个指定的键的映射
		ssh.remove("小虎");
        System.out.println(ssh);
        
        System.out.println("===================================");
        //boolean containsKey(Object key)如果此映射包含指定键的映射,则返回true 。
        System.out.println(ssh.containsKey("邓超"));
        System.out.println(ssh.containsKey("小虎"));
    }
}
            执行结果如下:
                        {邓超=孙俪, 吴京=谢楠, 小虎=冯提莫, 张杰=谢娜}
                        ===================================
                        {邓超=孙俪, 吴京=谢楠, 张杰=谢娜}
                        ===================================
                        true
                        false

                        Process finished with exit code 0
判断功能②:boolean containsValue(Object value)如果此映射将一个或多个键映射到指定的值,则返回true
public class MapDemo1 {
    public static void main(String[] args) {
        //创建一个Map集合对象,Map属于接口,不能实例化,用它的一个子类创建对象
        HashMap<String, String> ssh = new HashMap<>();

        //添加元素
        //V put(K key, V value)将指定的值与该映射中的指定键相关联
        ssh.put("邓超", "孙俪");
        ssh.put("吴京", "谢楠");
        ssh.put("张杰", "谢娜");
        ssh.put("小虎", "冯提莫");
        System.out.println(ssh);

        System.out.println("===================================");
		//从该map集合中删除一个指定的键的映射
		ssh.remove("小虎");
        System.out.println(ssh);
        
        System.out.println("===================================");
        //boolean containsKey(Object key)如果此映射包含指定键的映射,则返回true 。
        System.out.println(ssh.containsKey("邓超"));
        System.out.println(ssh.containsKey("小虎"));
        
        //boolean containsValue(Object value)如果此映射将一个或多个键映射到指定的值,则返回true 
        System.out.println(ssh.containsValue("孙俪"));
        System.out.println(ssh.containsValue("冯提莫"));
    }
}
            执行结果如下:
                        {邓超=孙俪, 吴京=谢楠, 小虎=冯提莫, 张杰=谢娜}
                        ===================================
                        {邓超=孙俪, 吴京=谢楠, 张杰=谢娜}
                        ===================================
                        true
                        false
                        true
                        false

                        Process finished with exit code 0
判断功能③:boolean isEmpty() //如果此map不包含键值映射,则返回 true(注意:是不包含则返回true)
public class MapDemo1 {
    public static void main(String[] args) {
        //创建一个Map集合对象,Map属于接口,不能实例化,用它的一个子类创建对象
        HashMap<String, String> ssh = new HashMap<>();

        //添加元素
        //V put(K key, V value)将指定的值与该映射中的指定键相关联
        ssh.put("邓超", "孙俪");
        ssh.put("吴京", "谢楠");
        ssh.put("张杰", "谢娜");
        ssh.put("小虎", "冯提莫");
        System.out.println(ssh);

        System.out.println("===================================");
		//从该map集合中删除一个指定的键的映射
		ssh.remove("小虎");
        System.out.println(ssh);
        
        System.out.println("===================================");
        //boolean containsKey(Object key)如果此映射包含指定键的映射,则返回true 。
        System.out.println(ssh.containsKey("邓超"));
        System.out.println(ssh.containsKey("小虎"));
        
        //boolean containsValue(Object value)如果此映射将一个或多个键映射到指定的值,则返回true 
        System.out.println(ssh.containsValue("孙俪"));
        System.out.println(ssh.containsValue("冯提莫"));
        
        System.out.println("===================================");
        //boolean isEmpty()如果此map不包含键值映射,则返回true
        System.out.println(ssh.isEmpty());
    }
}
            执行结果如下:
                        {邓超=孙俪, 吴京=谢楠, 小虎=冯提莫, 张杰=谢娜}
                        ===================================
                        {邓超=孙俪, 吴京=谢楠, 张杰=谢娜}
                        ===================================
                        true
                        false
                        true
                        false
                        ===================================
                        false

                        Process finished with exit code 0
(4)长度功能:int size() //返回此集合中键值映射的个数
public class MapDemo1 {
    public static void main(String[] args) {
        //创建一个Map集合对象,Map属于接口,不能实例化,用它的一个子类创建对象
        HashMap<String, String> ssh = new HashMap<>();

        //添加元素
        //V put(K key, V value)将指定的值与该映射中的指定键相关联
        ssh.put("邓超", "孙俪");//邓超是键,孙俪是值
        ssh.put("吴京", "谢楠");
        ssh.put("张杰", "谢娜");
        ssh.put("小虎", "冯提莫");
        System.out.println(ssh);
        
        System.out.println("===================================");
        //int size()返回此集合中键值映射的个数
        System.out.println("map集合中的键值对个数:" + ssh.size());
    }
}
            执行结果如下:
                        {邓超=孙俪, 吴京=谢楠, 小虎=冯提莫, 张杰=谢娜}
                        ===================================
                        map集合中的键值对个数:3

                        Process finished with exit code 0
(5)获取功能
V get(Object key)//输入指定键的映射,获取指定键所映射的值,如果map中不包含该键,返回的是null
Set<K> keySet()//返回此map中包含的键的Set视图(就是获取集合键的映射)
Collection<V> values()//返回此地图中包含的值的Collection视图(获取集合键的映射值)
import java.util.Collection;
import java.util.HashMap;
import java.util.Set;

public class MapDemo2 {
    public static void main(String[] args) {
        //创建map集合对象
        HashMap<String, String> ssh = new HashMap<>();

        //添加元素
        ssh.put("邓超", "孙俪");
        ssh.put("吴京", "谢楠");
        ssh.put("张杰", "谢娜");
        ssh.put("小虎", "冯提莫");

        //V get(Object key)
        //输入指定键的映射,获取指定键所映射的值,如果map中不包含该键,返回的是null
        System.out.println(ssh.get("邓超"));//孙俪
        System.out.println("===================================");

        //Set<K> keySet()返回此map中包含的键的Set视图(就是获取集合键的映射)
        Set<String> strings = ssh.keySet();
        for(String s : strings){
            System.out.println(s);
        }
        System.out.println("===================================");

        //Collection<V> values()返回此地图中包含的值的Collection视图(获取集合键的映射值)
        Collection<String> values = ssh.values();
        for (String s : values){
            System.out.println(s);
        }
    }
}

3、遍历Map集合的方式

遍历map集合的方式1:根据键找值

import java.util.HashMap;
import java.util.Set;

/*
            1、获取Map集合中所有映射的键的Set集合
            2、遍历键的集合,根据键找对应的值
            3、输出
 */
public class MapDemo3 {
    public static void main(String[] args) {
        HashMap<String, String> ssh = new HashMap<>();

        //添加元素
        ssh.put("洛", "霞");
        ssh.put("卢锡安", "塞纳");
        ssh.put("蛮王", "艾希");
        ssh.put("盖伦", "卡特");
        ssh.put("卢锡安", "塞纳");

        //获取Map集合中所有映射的键的Set集合
        Set<String> keySet = ssh.keySet();

        for (String key : keySet) {
            String value = ssh.get(key);
            System.out.println(key + "---" + value);
        }
    }
}
            执行结果如下:
                        卢锡安---塞纳
                        洛---霞
                        蛮王---艾希
                        盖伦---卡特

                        Process finished with exit code 0

遍历map集合的方式2:根据键值对的对象找键和值

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/*
        1、获取所有键值对的集合
        2、遍历获取每一个键值对,得到每一个键值对对象
        3、根据获取到的每一个键值对对象,来进一步获取键和值
 */
public class MapDemo4 {
    public static void main(String[] args) {
        HashMap<String, String> ssh = new HashMap<>();

        //添加元素
        ssh.put("洛", "霞");
        ssh.put("卢锡安", "塞纳");
        ssh.put("蛮王", "艾希");
        ssh.put("盖伦", "卡特");
        ssh.put("卢锡安", "塞纳");

        //获取所有键值对的集合
        Set<Map.Entry<String, String>> entries = ssh.entrySet();
        for (Map.Entry<String, String> keyValue : entries) {
            //HashMap中重写了getKey()和getValue()方法
            String key = keyValue.getKey();//获取键的映射
            String value = keyValue.getValue();//获取键的映射值

            System.out.println(key + "---" + value);
        }
    }
}
                执行结果如下:
                            卢锡安---塞纳
                            洛---霞
                            蛮王---艾希
                            盖伦---卡特

                            Process finished with exit code 0
posted @ 2021-12-31 15:43  阿伟宝座  阅读(128)  评论(0)    收藏  举报