• Collection与Map学习笔记(三)


    本篇是Collection与Map学习笔记第三篇,主要来总结Map接口及其实现类。

    1.Map综述

    Map接口用来储存“键值对”。Map接口主要有四个实现类:HashMap、TreeMap、Hashtable、WeakHashMap.

    Map的子接口有:AbstractMap、SortedMap、NavigableMap.

    AbstractMap是个抽象类,继承了Map大部分接口。

    SortedMap除集成Map的接口以外,还可以进行排序。排序利用的方法是比较器(Comparator).所以实现SortedMap的类储存的是有序的键值对。

    NavigableMap是SortedMap的子接口,除了可以排序以外,还提供了一系列导航方法:如"获取大于/等于某对象的键值对"、“获取小于/等于某对象的键值对”等等。 

    HashMap继承了AbstractMap,但没有实现Navigable接口,存储的是“键值对,但无序”。

    TreeMap继承了AbstractMap,还实现Navigable接口,存储的是“键值对,并且有序”。

    Hashtable集成了Dictionary,并实现了Map接口。存储的是“键值对,但无序”。与HashMap相比,Hashtable是线程安全的。并且支持通过Enumeration遍历。

    WeakHashMap也继承与AbstractMap,与HashMap不同的是WeakHashMap的键是“弱键”。

    1.1Map接口的API

    clear()    清除对象中所有元素

    put(k,v)   将一个键值对加入键值对集合。

    putAll(Map<> map>   讲一个键值对集合放入

    entrySet()    键值对集合的所有键值对的Set集合

    keySet()          键值对集合的key 的Set集合

    values()           键值对集合的value集合,返回值类型为Collection

    size()               键值对集合的大小

    isEmpty()         键值对集合是否为空

    get(key)          通过key获得对应的value

    remove(key)    删除对应key的键值对

    containskey(key)    是否包含key

    containsvalue(value)   是否包含value

    hashCode()            获得哈希值

    equals(Object obj)   判断是否相等

    1.2Map.Entry

    Map.Entry是Map内部的接口,Map.Entry是键值对。Map的实现类对象,可以通过entrySet()方法获得键值对集合。然后可以利用Map.Entry提供方法获得key/value/重置value等操作。

    常用方法有:

    getKey()

    getValue()

    setValue(newvalue)

    hashCode()

    equals(Object obj)

    1.3Map的遍历方式

    Map的实现类有三种遍历方法,分别是对键值对集合进行遍历、对键集合进行遍历、对值集合进行遍历。下面以HashMap类对象为例说明

    a.对键值对集合进行遍历

     //假设map为HashMap类对象,key类型为String,value类型为Integer

    Iterator iter=map.entrySet().iterator();

    String key=null;

    Integer integ=null;

    while(iter.hasNext()){

    Map.Entry entry=(Map.Entry)iter.next();

    key=entry.getKey();

    integ=entry.getValue();

    }

    b.通过键集合进行遍历

    Iterator iter=map.keySet().iterator();

    String key=null;

    Integer integ=null;

    while(iter.hasNext()){

    key=iter.next();

    integ=map.get(key);

    }

    c.通过值集合进行遍历

    Iterator iter=map.values().iterator();

    Integer integ=null;

    while(iter.hasNext()){

    integ=iter.next();

    }

    2.HashMap

    HashMap继承自AbstractMap,存储的键值对为无序的键值对。

    HashMap是最基本Map实现类,具有上文Set接口所属的功能,在此不再赘述。

    3.TreeMap

    TreeMap继承自AbstractMap/NavigableMap,存储的价值对,且是有序的。

    3.1构造函数

    a.HashMap()   创建一个空的HashMap对象

    b.HashMap(Comparator<> c>   利用某个比较器创建一个HashMap对象

    c.HashMap(Map<>  map)          带Map的构造器,其中map是创建的对象的一个子集

    d.HashMap<SortedMap<> map)   带SortedMap的构造器,其中map是创建的对象的一个子集

    3.2常用方法

    a.firstEntry()   lastEntry()  lowerEntry()   higherEntry()   floorEntry()   ceilingEntry()  poolFirstEntry()  poolLastEntry()

    上述方法都是通过继承NavigableMap类获得的,都是获得一个键值对,及返回值类型为Map.Entry。

    firstEntry()    返回第一个键值对

    lastEntry()    返回最后一个键值对

     lowerEntry(k)  返回一个键是小于k的,且是最大的一个键的键值对

    higherEntry(k)  返回一个键是大于k的,且是最小的一个键的键值对

    floorEntry(k)    返回一个键是小于等于k的,且是最大的一个键的键值对

    ceilingEntry(k)    返回一个键是大于等于k的,且是最大的一个键的键值对

    poolFirstEntry()   删除并返回第一个键值对

    poolLastEntry()   删除并返回最后一个键值对

     b.firstKey()   lastKey()  lowerKey()   higherKey()   floorKey()   ceilingKey() 

    这些方法都是用来获取key。方法和a类的获取键值对类似,在此不再赘述。

    c.反向函数

    descendingMap()  获取一个反向的TreeMap

    descendingEntrySet()   获取一个反向的键值对集合

    d.集合函数

    entrySet()   keySet( )  values()

    e.Map接口函数

    clear()        size()       put()  putAll()    remove()     get()    containsKey()      containsValue()    isEmpty()

    3.3遍历方法

    遍历方法为通用遍历方法即:遍历键值对、遍历键、遍历值

    4.Hashtable

    Hashtable继承自Dictionary,并实现了Map接口,储存的也为键值对,且为无序的。与HashMap不同的是,Hashtable为线程安全的,并且可以通过美居Enumeration遍历。

    4.1Hashtable的构造器

    Hashtable()     创建一个空的构造器

    Hashtable(int initialCapacity)     创建一个初始容量为initialCapacity的构造器

    Hashtable(Map<>  map)            利用map创建一个Hashtable对象

    4.2常用方法

    a.Map方法

    clear()      put()    putAll()        isEmpty()         get()        size()       remove()      containsKey()        containsValue() 

    b.集合方法

    entrySet()      keySet()         values()

    c.枚举方法

    elements()       keys()

    4.3遍历方法

    遍历键值对集合、遍历键集合、遍历值集合、遍历键枚举、遍历值枚举

    a.遍历键值对集合

    String key=null;

    Integer integ=null;

    Iterator iter=table.entrySet().iterator();

    while(iter.hasNext()){

    Map.Entry  entry=(Map.Entry)iter.next();

    key=entry.getKey();

    integ=entry.getValue();

    }

    b.遍历键集合

    String key=null;

    Integer integ=null;

    Iterator iter=table.keySet().iterator();

    while(iter.hasNext()){

    key=inter.next();

    integ=hashtable.get(key);

    }

    c.遍历值集合

    Integer integ=null;

    Iterator iter=table.valuest().iterator();

    while(iter.hasNext()){

    integ=iter.next();

    }

    d.遍历值枚举

    Enumeration enum=table.elements();

    while(enum.hasMoreElements()){

    System.out.println(enum.nextElement();

    }

    e.遍历键枚举

    Enumeration enum=table.keys();

    while(enum.hasMoreElements()){

    system.out.println(enum.nextElement());

    }

  • 相关阅读:
    QT资料大全
    网络协议及tcp协议详解
    QT和Java的跨平台
    QString转char *
    QT删除整个文件夹
    QT获取linux下的当前用户名
    std::map自定义类型key
    QT程序自启动
    linux下通过命令连接wifi
    Rsync实现文件的同步
  • 原文地址:https://www.cnblogs.com/hitnmg/p/9366906.html
Copyright © 2020-2023  润新知