当前位置: 首页 > news >正文

java后端开发day35--集合进阶(四)--双列集合:MapHashMapTreeMap

请添加图片描述
(以下内容全部来自上述课程)
在这里插入图片描述

1.双列集合

1.1 特点

  1. 双列集合一次需要存一对数据,分别为键和值
  2. 键不能重复,值可以重复
  3. 键和值是一一对应的,每一个键只能找到自己对应的值
  4. 键+值这个整体,我们称之为“键值对”或者“键值对对象”,在Java中叫做“Entry对象”

1.2 双列集合的体系:

请添加图片描述

2.Map

2.1 Map的常见API

Map是双列集合的顶层接口,它的功能是全部双列集合都可以继承使用的。
请添加图片描述
细节:

  1. put:添加/覆盖
    在添加数据的时候,如果键不存在,那么直接把键值对对象添加到map集合当中,方法返回null
    在添加数据的时候,如果键是存在的,那么会把原有的键值对对象覆盖,会把被覆盖的值进行返回。

2.2 Map的遍历方式

2.2.1 键找值

把键都获取出来放到单列集合中,再遍历集合用get方法获取值。

//1.创建Map集合对象
Map<String,String> map = new HashMap<>();//2.添加元素
map.put("尹志平","小龙女");
map.put("郭靖","穆念慈");
map.put("欧阳克","黄蓉");//3.通过键找值
//3.1获取所有的键,把这些键放到一个单列集合中
Set<String> keys = map.keySet();
//3.2遍历单列集合,得到每一个键
for(String key:keys){//3.3利用map集合中的键获取对应的值 getString value = map.get(key);System.out.println(key+"="+value);
}

2.2.2 键值对

//1.创建Map集合对象
Map<String,String> map = new HashMap<>();//2.添加元素
map.put("尹志平","小龙女");
map.put("郭靖","穆念慈");
map.put("欧阳克","黄蓉");//3.通过键值对对象进行遍历
//3.1通过一个方法获取所有的键值对对象,返回一个Set集合
Set<Map.Entry<String,String>> entries = map.entrySet();
//3.2遍历entries这个集合,去得到里面的每一个键值对对象
for(Map.Entry<String,String>> entry : entries){ //entry ---> "郭靖","穆念慈"//3.3利用entry调用get方法获取键和值String key = entry.getKey();String Value = entry.getValue();System.out.println(key+"="+value);
}

2.2.3 Lambda表达式

请添加图片描述
底层:
forEach其实就是利用第二种方式进行遍历,依次得到每一个键和值
再调用accept方法

//1.创建Map集合对象
Map<String,String> map = new HashMap<>();//2.添加元素
map.put("尹志平","小龙女");
map.put("郭靖","穆念慈");
map.put("欧阳克","黄蓉");//3.利用lambda表达式进行遍历
map.forEach(new BiConsumer<String,String>(){@Overridepublic void accept(String key, Sring value){System.out.println(key+"="+value);
}
});System.out.println("-------------------------")map.forEach((String key, Sring value) -> {System.out.println(key+"="+value);}
);System.out.println("-------------------------")map.forEach((key, value) -> System.out.println(key+"="+value));

3. HashMap

1.特点

  • HashMap是Map里面的一个实现类
  • 没有额外需要学习的特有方法,直接使用Map里面的方法就可以了。
  • 特点都是由键决定的,无序,不重复,无索引
  • HashMap跟HashSet底层原理是一模一样的,都是哈希表结构

2.底层原理

请添加图片描述

  • 依赖hashCode方法和equals方法保证键的唯一
  • 如果键存储的是自定义对象,需要重写hashCode和equals方法
  • 如果值存储自定义对象,不需要重写hashCode和equals方法

4.LinkedHashMap

  • 由键决定:有序、不重复、无索引
  • 这里的有序指的是保证存储和取出的元素顺序一致
  • 原理:底层数据结构依然是哈希表,只是每一个键值对元素又额外的多了一个双链表的机制记录存储的顺序。
    请添加图片描述

5.TreeMap

5.1 特点

  • TreeMap跟TreeSet底层原理一样,都是红黑树结构的。
  • 由键决定特性:不重复、无索引、可排序
  • 可排序:对键进行排序
  • 注意:默认按照键的从小到大进行排序,也可以自己规定键的排序规则。

5.2 代码书写两种排序规则

  • 1.实现Comparable接口,指定比较规则

  • 2.创建集合时传递Comparator比较器对象,指定比较规则。

  • 两种都有以第二种为主。

  • Integer Double 默认情况下都是按照升序排列的

  • String 按照字母在ASCII码表中对应的数字升序进行排列

相关文章:

  • 深入剖析PHP反弹Shell:OSCP场景下的实现、原理与优化
  • sql 根据时间范围获取每日,每月,年月的模版数据
  • MOS管驱动电路以及阻值选取
  • rl中,GRPO损失函数详解。
  • VulnHub-DarkHole_2靶机渗透教程
  • DCAN,ECAN和MCAN的区别
  • 基于SpringBoot的校园二手商品在线交易系统+含项目运行说明文档
  • UniGoal 具身导航 | 通用零样本目标导航 CVPR 2025
  • ABP-Book Store Application中文讲解 - Part 0:开发环境搭建
  • 创建第一个Spring Boot项目
  • 文案提取有错别字怎么办?
  • QT之Q_PROPERTY介绍以及在QWidget中的用法
  • 武汉昊衡科技OLI光纤微裂纹检测仪:高密度光器件的精准守护者
  • 基于Python爬虫的豆瓣电影信息爬取(可以根据选择电影编号得到需要的电影信息)
  • GPLT-2025年第十届团体程序设计天梯赛总决赛题解(2025天梯赛题解,共计266分)
  • -PHP 反序列化POP 链构造魔术方法流程漏洞触发条件属性修改
  • Linux 管道理解
  • cf | Common Multiple
  • 来访登记二维码生成
  • deepseek-php-client开源程序是强力维护的 PHP API 客户端,允许您与 deepseek API 交互
  • 董明珠的接班人还是董明珠
  • 质与量齐升、快与稳并举,专家解读上海一季度经济数据
  • 北大学者:过度依赖技术工具可能会削弱人类主动思考的能力
  • 夜读丨一条鱼的使命
  • 俄总理:2024年俄罗斯GDP增长4.3%
  • 马上评丨电子屏不如黑板?解决问题不能靠怀旧