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

    键是红黑树结构,可以保证键的排序和唯一性
     
  • 相关阅读:
    vue中的 computed 和 watch 的区别
    mysql8.0 初始化数据库及表名大小写问题
    sql server alwayson 调整数据文件路径
    zabbix 自定义监控 SQL Server
    mysql 创建用户及授权
    mysql 设置从库只读模式
    mysql8.0 主从复制安装及配置
    centos8.0安装mysql8.0
    centos8替换阿里数据源
    npm publish 报错 【you or one of your dependencies are requesting a package version that is forbidden by your security policy】
  • 原文地址:https://www.cnblogs.com/judylucky/p/4549094.html
Copyright © 2011-2022 走看看