集合(开发重点)

三、Map集合体系

  1. Map集合的特点:【基础重点】
    (1) 存储任意的 键值对 (key-value),Map中一个集合元素是一个键值对
    (2) 键:无序、无下标、不允许重复(唯一)
    (3) 值:无序、无下标、允许重复
  2. Map 集合中的方法
    (1) V put(K key,V value) : 往Map集合中添加一个键值对,如果键在Map中没有存在,则直接添加,返回值为
    null;如果键在Map中已经存在,则新的Value覆盖原有的value数据,被覆盖的value数据作为返回
    值进行返回。【开发重点】
    (2) V remove(K key):根据键,删除对应的键值对,被删除的值(value)作为返回值返回。
    (3) V get(K key):根据键,返回对应的值(value)。【重点】
    (4) boolean containsKey(K key):判断Map集合中是否包含指定的键,包含-true;不包含-false.
    (5) boolean containsValue(V value):判断Map集合中是否包含指定的值,包含-true;不包含-false.
    (6) int size() : 获取Map中键值对的个数。
  3. 实现类:HashMap
    注意:如果自定类型的对象存储在HashMap的键上,为保证键的不允许重复,则自定义类型的对象对应的类
    需要覆盖hashCode方法和equals方法;但是开始通常用 String/Integer类型的数据作为键。
    (1) HashMap: JDK1.2 版本,线程不安全,运行效率较高,允许null 作为 key/value。【开发重点】
    (2) Hashtable : JDK1.0版本,线程安全,运行效率慢,不允许null作为key/value。 (3) Properties:是 Hashtable的子类,要求 键和值都是String类型。开发时,通常用于读取配置文件。
    (4) SortedMap : 是 Map子接口,可以对键完成自动排序。实现类:TreeMap
    (5) LinkedHashMap:是 HashMap的子类,按照添加的顺序完成键值对的存储。
    面试题目:HashMap 和 Hashtable的区别。
  4. 遍历:
    (1) 第一种遍历方式:键遍历,通过 keySet()方法获取Map 所有的键 【开发应用重点】
    Set< K > ks = map.keySet(); // 获取所有的键
    // 利用 foreach遍历 set集合
    for(K key : ks){
    // 通过 map 的 get方法,获取键对应的值
    V value = map.get(key);
    // 利用 key 和 value 操作每一个键和值即可
    }
    (2) 第二种遍历方式:值遍历 ,通过 values() 获取 Map中所有的值
    Collection< V > vs = map.values();
    //利用 foreach 遍历 Collection集合
    for(V value:vs){
    // 通过 value 操作对应的值
    }
    (3) 第三种遍历方式:键值对遍历,通过 entrySet方法获取Map中所有键值对
    Set< Map.Entry< K,V>> kvs = map.entrySet();
    // 通过foreach遍历 set集合 获取每一个键值对(Entry)
    for(Map.Entry< K,V> kv : kvs ){
    // 利用 Entry中提供两个方法 getKey 和 getValue 获取键和值的信息
    K key = kv.getKey(); // 从键值对中获取键的信息
    V value = kv.getValue() ; // 从键值对中获取值的信息
    // 通过 key 和 value 操作键和值
    }
相关推荐
松仔log30 分钟前
JetPack——Paging3+Room
android·java·zoom
biter down5 小时前
14:pytest-order 插件 顺序控制案例
开发语言·python·pytest
郝学胜-神的一滴5 小时前
Qt 高级开发 009: C++ Lambda 表达式
开发语言·c++·qt·软件构建
星栈独行6 小时前
我在 Rust 全栈项目里用 JWT 做无状态认证
开发语言·后端·rust·前端框架·开源·github·web
Lei活在当下6 小时前
先用起来,再理解,关于协程Coroutine应该知道的事
android·java·jvm
石山代码6 小时前
C++ 轻量级日志系统
开发语言·c++
Java爱好狂.6 小时前
Java程序员体系化学习路线(2026最新版)
java·后端·java面试·java架构师·java程序员·java八股文·java学习路线
tongluowan0077 小时前
以ReentrantLock为例解释AQS的工作流程
java·模板方法模式·aqs·reentrantlock
小技与小术7 小时前
玩转Flask
开发语言·python·flask
SilentSamsara7 小时前
Python 性能优化:tracemalloc、profiling 与 C 扩展加速
开发语言·python·青少年编程·性能优化