zoukankan      html  css  js  c++  java
  • java基础(八)---map

    MAP

      Map用于保存具体映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的key,另外一组值用于保存Map里的value,key和value都可以是任意类型的数据。Map的key不允许重复,即同一个Map对象的任何两个key通过equals方法比较总是返回false。

    map接口定义了如下方法:

    V put(K key,V value)    -------------------->添加一个key-value对,如果当前map中已有一个与当前key相等的key-value对,则新的key-value会覆盖原来的key-value对。
    V remove(Object key)  --------------------->删除指定的key所对应的key-value对,返回被删除key所关联的value,如果key不存在返回null
    void clear()                 --------------------->删除该集合里的所有key-value对
    boolean containsKey(Object key)----------->查询该集合里是否包含指定的key,如果包含返回true
    boolean containsValue(Object value)------->查询该集合是否包含一个或多个value,如果包含返回true
    boolean isEmpty()        -------------------->查询该集合是否为空
    int size()                      ------------------->查询该集合里的key-value对的个数
    Set entrySet()              ------------------->返回该集合中包含的key-value对所组成的set集合,每个集合元素都是map.entry(entry是map的内部类)对象
    Set keyset()                 ------------------->返回该map中所有key组成的set集合
     
    拓展:
    MAP中包含一个内部类Entry,该类封装了一个key-value对。Entry包含如下三个方法:
      Object getKey():返回该Entry里包含的key值。
      Object getValue():返回该Entry里包含的value值。
      Object setValue(V value):设置该Entry里包含的value值,并返回新设置的value值

    Map集合的遍历:


    例子:
    Map<String,String> hm = new HashMap<String,String>();

    hm.put("it002","hello");
    hm.put("it003","world");
    hm.put("it001","java");

    //A:键找值
    Set<String> set = hm.keySet();//获取所有键的集合
      for(String key : set) {
        String value = hm.get(key);
        System.out.println(key+"---"+value);
    }

    //B:键值对对象找键和值
    Set<Map.Entry<String,String>> set2 = hm.entrySet();//获取所有的键值对对象的集合
    for(Map.Entry<String,String> me : set2) {
      String key = me.getKey();
      String value = me.getValue();
      System.out.println(key+"---"+value);

    }

    数据结构

    ArrayXxx:底层数据结构是数组,查询快,增删慢
    LinkedXxx:底层数据结构是链表,查询慢,增删快
    HashXxx:底层数据结构是哈希表。依赖两个方法:hashCode()和equals()
    TreeXxx:底层数据结构是二叉树。两种方式排序:自然排序和比较器排序

     

    HashMap和Hashtable

    键是哈希表结构,可以保证键的唯一性
    HashMap和Hashtable都是map接口的实现类,他们之间的关系完全类似于ArrayList和Vector的关系:
    Hashtable是一个古老的map实现类,它从JDK1.0开始出现,当时java还没提供map接口。
     
    HashMap和Hashtable区别:
      1.Hashtable是一个线程安全的map实现,但HashMap是线程不安全的实现,故HashMap的性能较高
      2.Hashtable不允许使用null作为key和value,如果试图将null放入Hashtable,会报NullPointException异常;但HashMap可放入null作为key或value。
     

     Hashtable的一个子类Properties:

       Properties类似Windows操作平台上的ini文件就是一种属性文件。Properties可以把Map对象和属性文件管理起来,从而可以把map对象中的key-value对写入属性文件。也可以把属性文件里的内容加载到map对象中,由于属性文件里的属性名、属性值只能是字符串类型,故Properties里的key、value都是字符串类型。

    它有如下方法:

    String getProperty(String key) :获取Properties中指定属性名对应的属性值。

    Object setProperty(String key, String value) :设置属性值,类似于Hashtable的put方法。

    void load(Reader reader):从属性文件中加载key-value对,把加载的key-value对追加到Properties里。

    void store(OutputStream out, String comments):将Properties的key-value对输出到属性文件里。

    TreeMap

    键是红黑树结构,可以保证键的排序和唯一性
     
  • 相关阅读:
    Swagger配置和使用
    请求SpringMVC接口如何传参数
    ssm搭建配置文件
    永久关闭windows10更新
    VSCode搭建java开发环境
    idea全局设置
    mybatis-plus查询指定字段
    mybayis-plus条件构造器
    Java日期时间操作的一些方法
    C#编写聊天软件客户端
  • 原文地址:https://www.cnblogs.com/judylucky/p/4549094.html
Copyright © 2011-2022 走看看