JDK源码阅读——集合框架——Map接口

java的集合框架中,分为两大类,一类是实现Collection接口的集合,另一类就是实现Map接口的集合。Collection集合大部分都是链表、数组、队列、栈等一对一数据结构的集合,而Map就比较特别,它是属于键值对形式,也是就我们常说的key-value形式的数据存储模型。在Map中,一个key永远对应着一个value,但是一个value可能会对应着多个key。Map中不允许出现重复的key,这是因为我们需要唯一确定一个key,获取它对应的value。更加通俗的来讲,Map只支持根据key来获取value,反之则不行。

Map中元素的顺序是由实现类决定的,有些Map的实现类中,元素的顺序是固定的,比如TreeMap。也有些类中Map的元素顺序是不固定的,比如HashMap。

JDK良心建议,一定小心使用可变对象作为Map的key。

渣渣吐血建议,不要使用可变对象作为Map的key

比如,Map对象可以作为Map的value,但是却不能成为Map的key。

因为Map只是一个接口,所以我们简单介绍一下里面声明的方法和内部类(接口)

Map中元素的数量(键值对的数量/key-value的数量)

int size();

判断是不是一个空Map,说白了,也就是元素数量为0

boolean isEmpty();

判断map中是否存在某个key

boolean containsKey(Object key);

判断map中是否存在某个value

boolean containsValue(Object value);

根据键(key)获取值(value)。一般来说返回key对应的value,如果找不到对应的value就返回null。但是还有一种可能就是你的value本身就为null。

V get(Object key)

像集合内添加/覆盖一个键值对。具体取决于Map是否已经有了一个参数所代表的key。没有的话新增一个key-value。有的话将覆盖

V put(K key, V value);

有添加就会有移除。根据key移除一个键值对,并且返回这个key对应的value

V remove(Object key)

向map中添加多个键值对(或者说一个map对象)。

void putAll(Map<? extends K, ? extends V> m);

删除map内的所有键值对,变成一个空的map

void clear();

获取所有键(key)

Set<K> keySet();

获取所有的值(value)

Collection<V> values()

然后现在再看看内部接口(类)

    interface Entry<K,V> {

        K getKey();


        V getValue();

 
        V setValue(V value);


        boolean equals(Object o);


        int hashCode();

    }

五个方法顾名知义,不再解释。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值