Map集合

Map集合

Map集合概述和特点

Map集合概述:
java.util
Interface Map<K,V> K:键的类型 V:值的类型
将键映射到值的对象。 地图不能包含重复的键; 每个键可以映射到最多一个值。

Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键对象和一个值对象。其中,键对象不允许重复,而值对象可以重复,并且值对象还可以是 Map 类型的,就像数组中的元素还可以是数组一样。

创建Map集合的对象
多态的方式
Map 接口主要有两个实现类:HashMap 类和 TreeMap 类。其中,HashMap 类按哈希算法来存取键对象,而 TreeMap 类可以对键对象进行排序。
示例

public class Map01 {
    public static void main(String[] args) {
        Map<String,String> map = new HashMap<String,String>();
        //V put(K key,V value)将指定的值与该映射中的指定键相关联(可选操作)。如果映射先前包含了密钥的映射,则旧值将被指定的值替换。
        map.put("001","哦哦");
        map.put("002","哈哈");
        map.put("003","嘿嘿");
//        map.put("003","哦哦");
        System.out.println(map);
    }
}

image
若是把被注释003那行添加进去,结果会变成:
image

Map集合的基本功能

方法名 说明
V put (K key,V value) 添加元素
V remove(Object key) 根据键删除键值对元素
void clear() 移除所有的键值对元素
boolean containsKey(Object key) 判断集合是否包含指定的键
boolean containsValue(Object value) 判断集合是否包含指定的值
boolean isEmpty() 判断集合是否为空
int size() 集合的长度,也就是集合中键值对的个数

示例

public class Map02 {
    public static void main(String[] args) {
        Map<String,String> map = new HashMap<>();
        // V put (K key,V value):添加元素
        map.put("郭靖","黄蓉");
        map.put("杨过","小龙女");
        map.put("张无忌","赵敏");

        // V remove(Object key):根据键删除键值对元素,返回删除的元素
//        System.out.println(map.remove("杨过"));//小龙女
//        System.out.println(map.remove("Bob"));//null

        // void clear():移除所有的键值对元素
//        map.clear();//{}

        // boolean containsKey(Object key): 判断集合是否包含指定的键
//        System.out.println(map.containsKey("杨过"));//true
//        System.out.println(map.containsKey("Bob"));//false

        // boolean containsValue(Object value):判断集合是否包含指定的值
//        System.out.println(map.containsValue("小龙女"));//true
//        System.out.println(map.containsValue("Bob"));//false

        // boolean isEmpty():判断集合是否为空
//        System.out.println(map.isEmpty());//false

        // int size():集合的长度,也就是集合中键值对的个数
//        System.out.println(map.size());//3

        System.out.println(map);
    }
}

Map集合的获取功能

方法名 说明
V get(Object key) 根据键获取值
Set keySet() 获取所有键的集合
Collection(V) values() 获取所有值的集合

示例

import java.util.*;//表示把这个包下的全部类导入到程序中。

public class map03 {
    public static void main(String[] args) {
        Map<String,String > map = new HashMap<>();
        map.put("郭靖","黄蓉");
        map.put("杨过","小龙女");
        map.put("张无忌","赵敏");

        // V get(Object key):根据键获取值
        System.out.println(map.get("杨过"));
        System.out.println(map.get("杨幂"));
        System.out.println("------------");
        // Set<K> keySet():获取所有键的集合
//        System.out.println(map.keySet());
        Set<String> keySet = map.keySet();
        for (String key:keySet) {
            System.out.println(key);
        }
        System.out.println("-----------");
        // Collection(V) values():获取所有值的集合
        Collection<String> values = map.values();
        for (String value :
                values) {
            System.out.println(value);
        }

    }
}

运行结果如下
image

Map集合的遍历

第一种遍历方式

1. 获取所有键的集合,用keySet()方法实现
2. 遍历键的集合,获取到每一个键。用增强for实现
3. 根据键去找值。用get(Object key)方法实现

示例

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

public class Map04 {
    public static void main(String[] args) {
        Map<String,String> map = new HashMap<>();

        map.put("郭靖","黄蓉");
        map.put("杨过","小龙女");
        map.put("张无忌","赵敏");

        Set<String> keySet = map.keySet();//获取所有键的集合
        for (String key :
                keySet) {
            String value = map.get(key);//根据键获取值
            System.out.println(key+","+value);
        }
    }
}

运行结果如下
image

第二种遍历方式

  1. 获取所有键值对对象的集合
    Set<Map.Entry<K,V>> entrySet():返回此地图中包含的映射的Set视图
    也就是获取所有键值对对象的集合
  2. 遍历键值对对象的集合,得到每一个键值对对象
    用增强for循环,得到每一个Map.Entry
  3. 根据键值对对象获取键和值
    getKey()获取键
    getValue()获取值
    示例
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

class Map041{
    public static void main(String[] args) {
        Map<String,String > map = new HashMap<>();

        map.put("郭靖","黄蓉");
        map.put("杨过","小龙女");
        map.put("张无忌","赵敏");

        Set<Map.Entry<String, String>> entrySet = map.entrySet();
        // Map.Entry<String,String>相当于Set集合中的元素类型
        for (Map.Entry<String,String> m:entrySet){
            String key = m.getKey();
            String value = m.getValue();
            System.out.println(key+","+value);
        }
    }
}

posted @ 2022-05-14 16:59  HFUUwzy  阅读(63)  评论(0编辑  收藏  举报