• Java学习:Map接口


    Map集合

    Collection接口: 定义了单列集合规范 Collection<E>

    • 每次存储一个元素 单个元素

    Map接口:定义了双列集合的规范 Map<K,V>

    • 每次存储一对元素

    java.util.Map<K,V>集合

    Map集合的特点:

    1. Map集合是一个双列集合,一个元素包含两值(一个key,一个value)
    2. Map集合中的元素,key和value的数据类型可以相同,也可以不同
    3. Map集合中的元素,key是不允许重复的,value是可以重复的
    4. Map集合中的元素,key和value是一一对应的
    java.util.HashMap<K,V>集合 implements Map<K,V>接口

    HashMap集合的特点:
    1.HashMap集合底层是哈希值:查询的速度特别的快

    • JDK.8之前:数组+单向链表
    • JDK.8之后:数组+单向链表/红黑树(链表的长度超过8):提高查询的速度

    2.HashMap集合是一个无序的集合,存储元素和取出元素的顺序有可能不一致

    java.util.LinkedHashMap<k,v>集合 extends HashMap<K,V>集合

    LinkedHashMap的特点:

    1. LinkedHashMap集合底层是哈希表+链表(保证迭代的顺序)
    2. LinkedHashMap集合是一个有序的集合,存储元素和取出元素的顺序是一致的

    Map接口中的常用方法

    public V put (K key,V value):把指定的键与指定的值添加到Map集合中。

    返回值:v

    • 存储键值对的时候,key不重复,返回值V是null
    • 存储键值对的时候,key重复,会使用新的value替换map中重复的value,返回被替换的value值

    public V remove(Object key):把指定的值 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。
    返回值:V

    • key存在,v返回被删除的值
    • key不存在,v返回null

    public V get(Object key)根据指定的键,在Map集合中获取对应的值。
    返回值:

    • key存在,返回对应的value值
    • key不存在,返回null

    boolean containsKey(Object key) 判断集合中是否包含指定的键

    • 包含返回true,不包含返回false

    Map集合的第一种遍历方式:通过键找值的方式

    Map集合中的方法:

    • Set<K> keySet() 返回此映射中包含的键的 Set 视图。

    实现步骤:

    1. 使用Map集合中的方法keySet(),把Map集合所有的key取出来,存储到一个Set集合中。
    2. 遍历Set集合,获取Map集合中的每一个Key
    3. 通过Map集合中的方法get(key),通过key找到value

    Entry键值对对象

    Map.Entry<K,V>:在Map接口中有一个内部接口Entry
    作用:当Map集合一创建,那么就会在Map集合中创建一个Entry对象,用来记录键与值(键值对对象,键与值的映射关系)

    Map集合遍历的第二种方式:使用Entry对象遍历

    Set<Map.Entry<K,V> entrySet() 返回此映射中包含的键的 Set 视图。
    实现步骤:

    1. Set<Map.Entry<K,V>> entrySet(): 把Map集合内部的多个Entry对象取出来存储到一个Set集合中
    2. 遍历Set集合:获取Set集合中的每一个Enter对象
    3. 获取Entry对象中的方法:getKey()获取key,getValue() 获取value

    HashMap存储自定义类型键值

    key:Person类型

    • Person类型必须重写hashCode方法和equals方法,以保证key唯一

    value:String类型

    • 可以重复
    java.util.linkedHashMap<K,V> extends HashMap<K,V>

    Map 接口的哈希表和链表列表实现,具有可预知的迭代顺序。

    底层原理:

    • 哈希表+链表(记录元素的顺序)

    Hashtable集合

    java.util.Hashtable<K,V>集合 implements Map<k,V>接口
    • Hashtable:底层也是一个哈希表,是一个线程安全的集合,是单线程集合,速度慢
    • HashMap:底层是一个哈希表,是一个线程不安全的集合,是多线程的集合,速度快
    • HashMap集合(之前学的所有集合):可以存储null值,null键
    • Hashtable集合:不能存储null值,null键
    • Hashtable集合和Vector集合一样,在jdk1.2版本之后被更先进的集合(HashMap,ArrayList)取代了
    • Hashtable的子类properties依然活跃在历舞台
    • Properties集合是一个唯一和I/O流相结合的集合
  • 相关阅读:
    如何在js中使用递归
    基于angular写的一个todolist
    使用github参与开源项目
    用sass写栅格系统
    Activity返回按钮
    Listview优化MovieListAdapter的使用
    [强悍]listview下拉刷新,上拉加载更多组件版
    Google自己的下拉刷新组件SwipeRefreshLayout
    当ListView有Header时,onItemClick里的position不正确
    tabhost练习,剥离自“去哪儿”
  • 原文地址:https://www.cnblogs.com/cainiao-chuanqi/p/11223241.html
Copyright © 2020-2023  润新知