第十三节:第四部分:集合框架:HashMap、LinkedHashMap、TreeMap

Map集合体系

Map集合体系

HashMap集合的底层原理

HashMap集合的底层原理

HashMap集合底层是基于哈希表实现的

HashMap集合底层是基于哈希表实现的

LinkedHashMap集合的底层原理

LinkedHashMap集合的底层原理

TreeMap集合的底层原理

TreeMap集合的底层原理

代码:

Student类

package com.itheima.day26_Map_impl;import java.util.Objects;public class Student implements Comparable<Student> {private String name;private int age;private double height;@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +", height=" + height +'}';}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Student student = (Student) o;return age == student.age && Double.compare(height, student.height) == 0 && Objects.equals(name, student.name);}@Overridepublic int hashCode() {return Objects.hash(name, age, height);}public Student() {}public Student(String name, int age, double height) {this.name = name;this.age = age;this.height = height;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public double getHeight() {return height;}public void setHeight(double height) {this.height = height;}@Overridepublic int compareTo(Student o) {return this.age - o.age;//年龄升序排序}
}

代码一:掌握Map集合下的实现类:HashMap集合的底层原理

package com.itheima.day26_Map_impl;import java.util.HashMap;//目标:掌握Map集合下的实现类:HashMap集合的底层原理
public class HashMapTest1 {public static void main(String[] args) {HashMap<Student,String> map = new HashMap<>();map.put(new Student( "蜘蛛精",25,168.5),"盘丝洞");map.put(new Student( "蜘蛛精",25,168.5),"水帘洞");map.put(new Student( "至尊宝",27,178.5),"水帘洞");map.put(new Student( "牛魔王",28,188.5),"牛头山");System.out.println(map);}
}

结果1

代码二:目标:掌握LinkedHashMap的底层原理

package com.itheima.day26_Map_impl;import java.util.LinkedHashMap;
import java.util.Map;//目标:掌握LinkedHashMap的底层原理
public class LinkedHashMapTest1 {public static void main(String[] args) {Map<String,Integer> map = new LinkedHashMap<>();//按照键 有序,不重复,无索引。map.put("手机",128);map.put("手机",222);map.put("笔记本",666);map.put("手表",999);map.put(null,null);System.out.println(map);}
}

结果2

代码三:掌握TreeMap集合的使用

package com.itheima.day26_Map_impl;import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;//目标:掌握TreeMap集合的使用
public class TreeMapTest {public static void main(String[] args) {Map<Student,String> map = new TreeMap<>(new Comparator<Student>() {@Overridepublic int compare(Student o1, Student o2) {return Double.compare(o1.getHeight(), o2.getHeight());}});map.put(new Student( "蜘蛛精",25,168.5),"盘丝洞");map.put(new Student( "蜘蛛精",25,168.5),"水帘洞");map.put(new Student( "至尊宝",27,178.5),"水帘洞");map.put(new Student( "牛魔王",28,188.5),"牛头山");System.out.println(map);}
}

结果3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/397.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

命名管道实现本地通信

目录 命名管道实现通信 命名管道通信头文件 创建命名管道mkfifo 删除命名管道unlink 构造函数 以读方式打开命名管道 以写方式打开命名管道 读操作 写操作 析构函数 服务端 客户端 运行结果 命名管道实现通信 命名管道通信头文件 #pragma#include <iostream> #include &l…

Spring 框架之IOC容器加载重要组件

1.读取配置 如果配置了这样的Bean: 或者 或者 这些是不同定义bean的方式&#xff0c; 他们最终都会生成bean。 那Spring为了生成bean代码复用&#xff0c;使用统一的创建流程&#xff0c;所以通过多态方式读取不同的配置会有不同的读取器&#xff0c;读取完后后续创建bean的流程…

数字证书_CA_详解

目录 一、数字证书简介 二、 CA&#xff08;证书颁发机构&#xff09; (一) 证书链&#xff08;信任链&#xff09; 1. 根证书 2. 中间证书 3. 网站证书 (二) 抓包软件的证书链与信任机制 1. 抓包通信流程 2. 证书链伪造与信任验证流程 (三) 关于移动设备的CA 一、数…

Qt Creator 11.0创建ROS2 Humble工程

Qt Creator 11.0创建ROS2 Humble项目工程 安装ROSProjectManager插件创建ROS2项目在src下添加packagegit clone ROS2功能包编译运行安装ROSProjectManager插件 安装ROSProjectManager的主要流程参考官方的流程,地址(ros_qtc_plugin)。 此处采用二进制安装: sudo apt inst…

卡西欧模拟器:Windows端功能强大的计算器

引言 大家还记得初中高中时期用的计算器吗&#xff1f;今天给大家分享的就是一款windows端的卡西欧计算器。 软件介绍 大家好&#xff0c;我是逍遥小欢。 CASIO fx-9860G是一款功能强大的图形计算器&#xff0c;适用于数学、科学和工程计算。以下是其主要功能和特点的详细介…

软件工程专业的本科生应该具备哪些技能

软件工程专业的本科生需要具备扎实的技术基础、良好的开发流程认知和一定的软技能&#xff0c;以适应软件开发行业的需求。以下从技术技能、开发流程与工具、软技能、实践能力等维度整理核心技能清单&#xff0c;供参考&#xff1a; 一、核心技术技能 1. 编程语言 - 必学基础语…

微信小程序实现运动能耗计算

微信小程序实现运动能耗计算 近我做了一个挺有意思的微信小程序&#xff0c;能够实现运动能耗的计算。只需要输入性别、年龄、体重、运动时长和运动类型这些信息&#xff0c;就能算出对应的消耗热量。 具体来说&#xff0c;在小程序里&#xff0c;性别不同&#xff0c;身体基…

点评中是如何实现短信登录的

点评中是如何实现短信登录的 首先在这个项目中 我们主要还是通过session来实现的验证码登录 根据这个图片我们很清楚的知道 首先要制造一个随机的验证码以确保并且保存到redis中&#xff08;等下我会说为什么不存在session中&#xff09;接下来前端传来验证码 后端校验后 判断…

Kafka入门-集群基础环境搭建(JDK/Hadoop 部署 + 虚拟机配置 + SSH 免密+Kafka安装启动)

Kafka 简介 传统定义&#xff1a;Kafka是一个分布式的基于发布/订阅模式的消息队列&#xff0c;应用于大数据实时处理领域。 Kafka最新定义&#xff1a;Apache Kafka是一个开源分布式事件流平台&#xff0c;被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用…

从OSI到TCP/IP:网络协议的演变与作用

个人主页&#xff1a;chian-ocean 文章专栏-NET 从OSI到TCP/IP&#xff1a;网络协议的演变与作用 个人主页&#xff1a;chian-ocean文章专栏-NET 前言网络发展LANWAN 协议举个例子&#xff1a; 协议的产生背景 协议的标准化OSI模型参考OSI各个分层的作用各层次的功能简介 TCP/…

Java观察者模式深度解析:构建松耦合事件驱动系统的艺术

目录 观察者模式基础解析核心结构与实现原理Java内置观察者实现Spring框架中的高级应用典型应用场景与实战案例观察者模式变体与优化常见问题与最佳实践总结与未来展望1. 观察者模式基础解析 1.1 模式定义与核心思想 观察者模式(Observer Pattern)是一种行为型设计模式,它…

前端(vue)学习笔记(CLASS 7):vuex

vuex概述 vuex是一个vue的状态管理工具&#xff0c;状态就是数据 大白话&#xff1a;vuex是一个插件&#xff0c;可以帮我们管理vue通用的数据&#xff08;多组件共享的数据&#xff09; 场景 1、某个状态在很多个组件来使用&#xff08;个人信息&#xff09; 2、多个组件…