zoukankan      html  css  js  c++  java
  • 【幻化万千戏红尘】qianfengDay16-java基础学习:HashMap,HashTable,TreeMap

    课程回顾:

    数组

    异常

    常用类

    集合

    今日内容:

    集合:动态存储多个对象

    JAVA中集合的分类:

    1、Collection<E>

    1、List<E>:

    1、ArrayList<E>

    2、LinkedList<E>

    2、Set<E>:

    1、HashSet<E>

    2、TreeSet<E>

    3、LinkedHashSet<E>

    2、Map<K,V>:存储键值对(K-V)的元素

    1、HashMap<K,V>

    2、TreeMap<K,V>

    HashMap<K,V>:存储键值对信息

    键不可重复

    存储的键为自定义类时,一般重写hashCode和equals方法,进行验重

    常用方法:

    put:如果键不存在,则添加,否则就修改并将原来的值返回

    containsKey:验证是否包含指定的键

    containsValue:验证是否包含指定的值

    remove:移除指定键的元素并返回对应键的值

    size:获取元素个数

    keySet:获取所有键的Set集合对象

    get:获取指定键对应的值

    values:获取所有值的集合对象

    Map集合的遍历方式:

    1、keySet:获取所有键的Set集合对象Set<K>

    2、entrySet:获取所有元素的Set集合对象Set<Entry<K,V>>----(Map集合特有的)

    Map.Entry<K,V>:是Map接口的静态内部接口

    每个对象记录的就是Map集合中的每个元素

    常用方法:

    getKey:获取当前元素的键

    getValue:获取当前元素的值

    练习:请创建HashMap<Student,Phone>存储学生手机信息

    注意学生的重复(结合HashSet)

    练习2:请使用随机数生成100个[A-F]字母

    HashMap<Integer,Character>

    请统计每个字母出现的次数,请使用HashMap<Character,Integer>进行存储

    TreeMap<K,V>:存储键值对,根据键进行排序

    键为自定义类时,要求必须可排序,也就是实现比较器接口

    常用方法:

    put:

    first

    last

    ceiling

    floor

    higher

    lower

    pollFirst

    pollLast

    扩展之HashTable:

    HashMap和HashTable的区别?

    HashMap:

    1、实现的是AbstractMap<K,V>

    2、允许有null键和null值的存在

    3、containsKey和containsValue方法

    4、不安全

    HashTable:

    实现的是Dictionary<K,V>

    不能有null键或null值的存在

    contains:验证是否存在指定的值

    安全的

    HashTable<K,V>:存储键值对信息

    常用子类:

    Properties:属性集类

    将键值对信息保存到流中或从流中加载键值对信息

    常用方法:

    load:从指定的流中加载键值对信息

    store:将属性集对象中的键值对信息保存到流中

    setProperty:设置键值对信息,键存在则修改,键不存在则添加

    getProperty:获取指定键的值

    集合小结:

    List:有序,可重复,有索引

    Set:无序,不可重复,无索引

    Map:存储键值对,常常用于记录和查询,很少用于遍历输出

    读和改效率:

    Hash*:两者效率都很高

    ArrayList:读(索引)效率很高,写和删效率较低

    LinkedList:读效率较低,写和删效率较高

    数组和集合:

    开发中优先选择数组

    再考虑集合

    Map<Student,HashSet<Phone>>

    TreeMap<Student,TreeSet<GrilFriend>>

  • 相关阅读:
    C语言memmove()函数: 复制内存内容(可以重叠的内存块)
    #pragma pack(n)
    c++中sizeof的理解
    c/c++gdb下和发布版本下输出地址不同
    LeetCode 141. Linked List Cycle
    LeetCode 143. Reorder List
    TCP简介(一)
    通过cat方式生成yum源
    手动添加ceph的mds
    Linux 配置nfs
  • 原文地址:https://www.cnblogs.com/weigongcheng/p/5735924.html
Copyright © 2011-2022 走看看