zoukankan      html  css  js  c++  java
  • Java集合--Map

    Map接口(双例集合):

      Map提供了映射关系,存放的元素是以key-value键值对存放的。可以根据key快速的查询value。key不可以重复,value可以重复。

    常用实现类:HashMap,Hashtable,LinkedHashMap,TreeMap

    常用方法
    判断功能
    boolean isEmpty():判断map是否为空
    boolean containsKey(Object key):判断是否包含某个key
    boolean containsValue(Object value):判断是否包含某个value
     
    获取功能
    int size():返回键值对的个数
    V get(Object key):返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null
    Set<K> keySet():返回此映射中包含的键的 Set 视图
    Collection<V> values():返回此映射中包含的值的 Collection 视图
    Set<Map.Entry<K, V>> entrySet():返回此映射中包含的映射关系的 Set 视图
     
    添加功能
    V put(K key, V value):将指定的值与此映射中的指定键关联(可选操作)。如果此映射以前包含一个该键的映射关系,则用指定值替换旧值,并且返回旧的值。否则返回null
    void putAll(Map<? extends K, ? extends V> m):把一组键值对放入到Map中。
     
    删除功能
    V remove(Object key):删除指定的key对应的键值对,返回被删除的键指定的值
    void clear():从此映射中移除所有映射关系
     
    遍历方式
    方式1:根据键找值
    获取所有键的集合
    遍历键的集合,获取到每一个键
    根据键找值
    如:
    Set<String> keySet = stus.keySet();
    for(String key : keySet){
    System.out.println(key +": "+stus.get(key));
    }
    方式2:根据键值对对象找键和值
    获取所有键值对对象的集合
    遍历键值对对象的集合,获取到每一个键值对对象
    根据键值对对象找键和值
    Set<Entry<String, String>> entrySet = stus.entrySet();
    for(Entry<String, String> entry : entrySet){
    System.out.println(entry.getKey()+" : "+entry.getValue());
    }
     
    HashMap:
    特点:
    1. 不保证映射的顺序
    2. 可以使用null作为键或者值
    3. 线程不安全
    4. 底层使用Hash表来存储数据,默认大小16,负载因子0.75,当hash表的容量超过负载因子的时候开始扩容,扩容为原始容量的2
    5. 扩容时机,元素个数超过threshold的时候。
    6. 最多可以存放的元素个数为1<<30
    7. 执行new HashMap()的时候,并没有初始化table;而是在put的时候,才初始化。
    8. 不允许重复的key

    LinkedHashMap:

    特点:

    1. 可以排序,注意这里所说的顺序并不是添加的顺序。而是从大到小或者从小到大的顺序。
    2. 保证元素的唯一性

    Hashtable:

    特点:

    1、线程安全,效率低
    2、不能将null作为键或者值
    3、初始容量为11,负载因子为0.75。超过负载因子*容量开始扩容,扩容为旧的容量*2+1
     
     
  • 相关阅读:
    Oracle中查询表中数据的上次更新时间
    数据库分区 分库 分表 分片(转)
    beanFactory和factoryBean的区别(转)
    TCP三次握手形象理解
    深拷贝,浅拷贝(转)
    真的要去做
    '庞然大物'是怎么来的?为何有的技术明明看了很多遍依然不能很好的理解
    java6大原则之单一职责原则,里式替换原则
    状态不好记录一下
    java继承,多态
  • 原文地址:https://www.cnblogs.com/niexinlei/p/9691697.html
Copyright © 2011-2022 走看看