25 对Map集合的理解

 ✔

25.1 Map集合概述

        1.Map集合包含键值对;

        2.Map集合的创建规则:

        Map<键的数据类型,值的数据类型> mapList = new HashMap<键的数据类型,值的数据类型>();

        3.HashMap集合中的Hash表保证了键不可重复,如果重新使用了存在的键,则是修改操作,将覆盖上一个该键对应的值;当键是不同new的学生对象时,如果要把相同属性值的学生对象认为是相同键,则要重写equals和hashCode方法;如果是同一个new出来的学生对象作为键,则就是相同键;

        4.HashMap的值可以重复,一个值可以对应多个键;

        5.可以直接打印对象,因为HashMap重写了toString方法;

        6.Map集合是一个接口;

25.2 基本代码实现

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

public class Demo0726 {
    public static void main(String[] args) {
        Map<Integer, String> mapList = new HashMap<Integer, String>();
        mapList.put(100,"zhangsan");
        mapList.put(101,"zhangsan");
        mapList.put(102,"wangwu");
        mapList.put(100,"lisia");
        System.out.println(mapList);
    }
}

25.3 Map集合的方法

        put();//向集合中添加键值对,一次只能添加一对

        remove();//根据键移除键值对

        isEmpty();//判断集合是否为空

        clear(); //清空集合,没有返回值

        size();//获取集合的长度

        containsKey();//判断集合中是否存在该键

        containsValue(); //判断集合中是否存在该值

        get(); // 根据键获取值

        keySet();//获取键集合,返回的是一个Set集合,用增强for循环去遍历

        values();获取值集合,返回的是一个Set集合,用增强for循环去遍历

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

public class Demo0726 {
    public static void main(String[] args) {
        Map<Integer, String> mapList = new HashMap<Integer, String>();
        mapList.put(100,"zhangsan");
        mapList.put(101,"zhangsan");
        mapList.put(102,"wangwu");
        mapList.put(100,"lisia");
        System.out.println("删除前的集合:"+mapList);
        System.out.println(mapList.remove(100)); // 根据键删除值,返回删除键对应的值
        System.out.println("删除后的集合:"+mapList);
        System.out.println(mapList.containsKey(101)); //根据键找值,返回boolean
        System.out.println(mapList.containsValue("wangwu")); //根据值找键,返回boolean
        System.out.println(mapList.isEmpty());// 判断集合是否为空
        System.out.println(mapList.size());//获取集合长度
        System.out.println(mapList.get(102));// 根据键获取值
        Set<Integer> keySet = mapList.keySet(); // 获取键集合
        for (int key : keySet){
            System.out.println(key);
            System.out.println(mapList.get(key));//根据键找值
        }
        Collection<String> values = mapList.values();// 获取值集合
        for (String value : values){
            System.out.println(value);
        }
        mapList.clear();
        System.out.println(mapList);
    }
}

25.5 键值对的遍历

        键值对的遍历可以使用keySet()方法得到一个key的集合,再遍历该集合每次遍历调用get方法即可获取每个key对应的值:

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

public class Demo4 {
    public static void main(String[] args) {
        Map<Integer,String> map = new HashMap<Integer, String>();
        map.put(1,"zhangsan");
        map.put(2,"zhangsan1");
        map.put(3,"zhangsan2");
        map.put(4,"zhangsan3");
        Set<Integer> keys = map.keySet();
        for (Integer key:keys){
            System.out.println(key+":"+map.get(key));
        }
    }
}

        此外,还可以调用entrySet()方法,获取键值对对象,包含了键和值:

        然后,遍历键值对对象,使用getKey方法获取键,使用getValue方法获取值即可: 

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

public class Demo4 {
    public static void main(String[] args) {
        Map<Integer,String> map = new HashMap<Integer, String>();
        map.put(1,"zhangsan");
        map.put(2,"zhangsan1");
        map.put(3,"zhangsan2");
        map.put(4,"zhangsan3");
        System.out.println(map);

        Set<Map.Entry<Integer, String>> entrySet = map.entrySet();
        for (Map.Entry<Integer, String> me : entrySet){
            System.out.println(me.getKey()+":"+me.getValue());
        }
    }
}

25.6 注意点

猜你喜欢

转载自blog.csdn.net/no996yes885/article/details/131930394
25