• java集合系列——Map介绍(七)


    **一.Map概述 **
    0.前言
    首先介绍Map集合,因为Set的实现类都是基于Map来实现的(如,HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的)。
    1:介绍

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

    此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口。

    **2:类图关系 **

    这里写图片描述

    3:讲解

    (1):AbstractMap是一个抽象类, 继承Map,实现了Map的大部分API,它的作用Map的实现类继承它,可以减少重复编码!
    (2):SortedMap是一个接口 继承Map,自己也封装一下方法,SortedMap中的内容是排序的键值对,排序的方法是通过比较器(Comparator)。SortedMap的排序方式有两种:自然排序 或者 用户指定比较器。
    (3):ConcurrentMap是一个接口,并且继承Map接口,在java.util.concurrent包下!
    (4):HashMap 继承于AbstractMap,HashMap的内容是“键值对,但不保证次序”!
    (5): TreeMap 继承于AbstractMap,且实现了NavigableMap接口;因此,TreeMap中的内容是键值对,有序的键值对

    (6):ConcurrentHashMap继承AbstractMap实现ConcurrentMap,是一个并发的哈希表!此类与 Hashtable 相似,但与 HashMap 不同,它不 允许将 null 用作键或值。线程安全,但是实现方法和Hashtable完全不同(并发情况可以使用) 。

    (7):Dictionary是一个抽象类(数据字典),HashTable继承Dictionary并实现Map接口,也是键值对,但不保证次序!Hashtable是线程安全的,而且它支持通过Enumeration去遍历。(现在使用很少,并发操作效率太低)

    **二.Map的API **

     void clear() 
              从此映射中移除所有映射关系(可选操作)。 
     boolean containsKey(Object key) 
              如果此映射包含指定键的映射关系,则返回 true。 
     boolean containsValue(Object value) 
              如果此映射将一个或多个键映射到指定值,则返回 true。 
     Set<Map.Entry<K,V>> entrySet() 
              返回此映射中包含的映射关系的 Set 视图。 
     boolean equals(Object o) 
              比较指定的对象与此映射是否相等。 
     V get(Object key) 
              返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。 
     int hashCode() 
              返回此映射的哈希码值。 
     boolean isEmpty() 
              如果此映射未包含键-值映射关系,则返回 true。 
     Set<K> keySet() 
              返回此映射中包含的键的 Set 视图。 
     V put(K key, V value) 
              将指定的值与此映射中的指定键关联(可选操作)。 
     void putAll(Map<? extends K,? extends V> m) 
              从指定映射中将所有映射关系复制到此映射中(可选操作)。 
     V remove(Object key) 
              如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。 
     int size() 
              返回此映射中的键-值映射关系数。 
     Collection<V> values() 
              返回此映射中包含的值的 Collection 视图。 
    
    

    其中:

       entrySet()用于返回键-值集的Set集合
       keySet()用于返回键集的Set集合
       values()用户返回值集的Collection集合
    

    嵌套类:

     interface Entry<K,V> {
        映射项(键-值对 )
    

    **三.后言 **
    接下来的博文介绍Map的实现类。主要介绍HashMap和TreeMap!其他的有时间会在去研究!

    附:Map类图(来源网络)

    这里写图片描述

    这里写图片描述

    参考文章:http://www.cnblogs.com/skywang12345/p/3308931.html


    欢迎访问我的csdn博客,我们一同成长!

    "不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!"

    博客首页:http://blog.csdn.net/u010648555

  • 相关阅读:
    redis 内部数据结构 ziplist
    redis 内部数据结构 robj
    redis 内部数据结构 sds
    redis 内部数据结构 dict
    【工具篇 intellij idea】像eclipse的 Ctrl + T 那样查看类的继承结构
    【分享系列】+【提炼总结】一文掌控面试必备的TCP知识
    【搬砖系列】一图搞懂 取余 和 取模 运算
    IOS代理(初级)
    UITableView
    UITextField属性
  • 原文地址:https://www.cnblogs.com/aflyun/p/6497811.html
Copyright © 2020-2023  润新知