• Java——Map,Set


    Map

    概念

    是一个接口类,并没有继承自Collection,其中存储,意思是key和value,其中key不能重复,value可以重复
    key被称之为关键字,value被称之为值,而他们的组合被称之为键值对

    Map.Entry

    是Map的内部类,用来存放键值对的映射关系

    方法解释
    K getKey()返回 entry 中的 key
    V getValue()返回 entry 中的 value
    V setValue(V value)将键值对中的value替换为指定value

    Map的常用方法

    方法解释
    V get(Object key)返回 key 对应的 value
    V getOrDefault(Object key, V defaultValue)返回 key 对应的 value,key 不存在,返回默认值
    V put(K key, V value)设置 key 对应的 value
    V remove(Object key)删除 key 对应的映射关系
    Set keySet()返回所有 key 的不重复集合
    Collection values()返回所有 value 的可重复集合
    Set> entrySet()返回所有的 key-value 映射关系
    boolean containsKey(Object key)判断是否包含 key
    boolean containsValue(Object value)判断是否包含 value

    需要注意的是:

    1. Map只是一个接口,要实例化的话应该选择TreeMap或HashMap
    2. Map中的key可以分离出来放到Set中
    3. Map中的value可以分离出来放到Collection中
    4. Map中的key无法直接修改,可以先删除再进行增加

    HashMap和TreeMap的区别

    Map底层结构TreeMapHashMap
    底层结构红黑树哈希桶
    插入/删除/查找 时间复杂度O(log N)O(1)
    是否有序关于Key有序无序
    线程安全不安全不安全
    插入/删除/查找区别需要进行元素比较通过哈希函数计算哈希地址
    比较与覆写key必须能够比较,否则会抛出ClassCastException异常自定义类型需要覆写equals和 hashCode方法
    应用场景需要Key有序场景下Key是否有序不关心,需要更高的时间性能

    Set

    概念

    Set继承了Collection,其中只存储了Key,并且Set中不存储重复的数据

    Set的常用方法

    方法解释
    boolean add(E e)添加元素,但重复元素不会被添加成功
    void clear()清空集合
    boolean contains(Object o)判断 o 是否在集合中
    Iterator iterator()返回迭代器
    boolean remove(Object o)删除集合中的 o
    int size()返回set中元素的个数
    boolean isEmpty()检测set是否为空,空返回true,否则返回false
    Object[] toArray()将set中的元素转换为数组返回
    boolean containsAll(Collection c)集合c中的元素是否在set中全部存在,是返回true,否则返回 false
    boolean addAll(Collection c)将集合c中的元素添加到set中,可以达到去重的效果

    注意:

    1. Set底层使用Map实现的,其Key值是一个Object的默认对象
    2. 和Map一样,Set实现的接口有TreeSet和HashSet,除此之外还有LinkedHashSet,其是在HashSet的基础上维护了一个双向链表记录元素的插入顺序
    3. 和Map一样,Set的key也不能直接修改
    4. Set中不能插入null

    TreeSet和HashSet的比较

    和HashMap与TreeMap的区别与特性一致,可以参考上面的表格

  • 相关阅读:
    猿创征文|人工智能啾养成之路 - 写代码三天,CSDN治好了我的精神内耗
    Java资深架构师带你深度“吃透”字节跳动的亿级流量+高并发,这还不冲?
    CS162 shell
    torch lighting 设置多个优化器
    【模型篇】01 记点脑子里还残存的关于模型分类的三种方式
    前端js反爬虫技术总结
    LeetCode_位运算_递归_中等_779.第K个语法符号
    SpringCloud - Spring Cloud Netflix 之 Hystrix ;turbine(十)
    随手记:vue2 filters this指向undefined
    完全解析Array.apply(null, { length: 1000 })
  • 原文地址:https://blog.csdn.net/m0_60867520/article/details/125891379