30-集合--Map+keySet()/entrySet()获取元素+Map.Entry+Map子类的特点+Hashtable+Properties+HashMap/TreeMap存储自定义对象

一、Map

1、Map与Collection都是集合框架中的顶层接口。Map集合一次添加一对元素,也称为双列集合(Collection集合一次添加一个元素,也称为单列集合)

2、interface Map<K, V>:将键映射到值的对象。一个映射不能包含重复的键,每个键最多只能映射到一个值。即 Map中存储的是键值对,且必须保证键的唯一性

3、Map接口提供三种collection视图,允许以键集值集键-值映射关系集的形式查看某个映射的内容

4、所有通用的映射实现类应该提供两个“标准的”构造方法:一个void(无参数)构造方法,用于创建空映射;一个是带有单个Map类型参数的构造方法,用于创建一个与其参数具有相同键-值映射关系的新映射。实际上,后一个构造方法允许用户复制任意映射,生成所需类的一个等价映射

5、嵌套类

(1)static interface Map.Entry<K, V>:映射项(键-值对)

6、方法

(1)添加

        V put(K key, V value):将指定的值与此映射中的指定键关联。如果此映射以前包含一个该键的映射关系,则用指定值替换旧值(当且仅当m.containsKey(k)返回true时,才能说映射m包含键k的映射关系)。否则,返回null

        void putAll(Map<? extends K, ? extends V> m):从指定映射中将所有映射关系复制到此映射中。对于指定映射中的每个键k到值v的映射关系,此调用等效于对此映射调用一次put(k, v)。如果正在进行此操作的同时修改了指定的映射,则此操作的行为是不确定的

(2)删除

        void clear():从此映射中移除所有映射关系。此调用返回后,该映射将为空(清空Map集合)

        V remove(Object key):如果存在一个键的映射关系,则将其从此映射中移除(根据指定的key删除这个键值对)。返回此映射中以前关联该键的值,如果此映射不包含该键的映射关系,则返回null

(3)判断

        boolean containsKey(Object key):如果此映射包含指定键的映射关系,则返回true

        boolean containsValue(Object value):如果此映射将一个或多个键映射到指定值,则返回true

        boolean isEmpty():如果此映射未包含键-值映射关系,则返回true

(4)获取

        V get(Object key):返回指定键所映射的值。如果此映射不包含该键的映射关系,则返回null

注:如果此映射允许null值,则返回null值并不一定表示该映射不包含该键的映射关系。也可能该映射将该键显示地映射到null。使用containsKey(key)操作可区分这两种情况

        int size():返回此映射中的键-值映射关系数(键值对的个数)

(5)其他

        Set<K> keySet():返回此映射中包含的键的Set视图

        Set<Map.Entry<K, V>> entrySet():返回此映射中包含的映射关系的Set视图

        Collection<V> values():返回此映射中包含的值的Collection视图。用Collection而不用Set是因为值不一定唯一

        //Map有泛型,Map<Integer, String>:学号和姓名
        Map<Integer, String> map = new HashMap<Integer, String>();
        map.put(8, "wangcai");  //null
        map.put(8, "xiaoqi");   //wangcai,存相同键,值会被覆盖,返回旧值
        System.out.println(map);    //{8=xiaoqi},键和值,用等号(=)连接,表示二者有关系
        map.put(2, "zhangsan");
        map.put(7, "zhaoliu");
        System.out.println(map);    //{2=zhangsan, 7=zhaoliu, 8=xiaoqi},无序,因为new的是HashMap
        //删除元素
        map.remove(2);  //zhangsan
        System.out.println(map);    //{7=zhaoliu, 8=xiaoqi}
        //判断
        map.containsKey(8); //true
        //获取
        map.get(8); //xiaoqi
        map.get(6); //null
        Map<Integer, String> map = new HashMap<Integer, String>();
        map.put(8, "wangwu");
        map.put(2, "zhaoliu");

        //键是唯一的,值不一定唯一,所
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值