LinkedHashMap、HashSet、LinkedHashSet的源码剖析。

LinkedHashMap、HashSet、LinkedHashSet的源码剖析

    • 1. LinkedHashMap
    • 2. HashSet
    • 3. LinkedHashSet

  LinkedHashMap、HashSet和LinkedHashSet都是Java中常用的集合类,下面分别剖析一下它们的源码看看。

1. LinkedHashMap

  • LinkedHashMap继承自HashMap,通过维护一个双向链表来保持插入顺序或访问顺序。
    在这里插入图片描述 - LinkedHashMap中的Entry继承自HashMap中的Entry,并额外包含了前一个和后一个Entry的引用,以维护链表。
    在这里插入图片描述

  • LinkedHashMap的put和get方法在HashMap的基础上增加了对链表的维护操作,以实现插入顺序或访问顺序的功能。
    在这里插入图片描述

2. HashSet

  • HashSet基于HashMap实现,HashSet中的元素存储在HashMap的key中,value使用一个固定的对象PRESENT
  • HashSet的add方法实际上是调用HashMap的put方法,将元素作为key存储到HashMap中。
  • HashSet的contains方法实际上是调用HashMap的containsKey方法来判断元素是否存在。
    在这里插入图片描述

3. LinkedHashSet

  • LinkedHashSet继承自HashSet,通过维护一个双向链表来保持插入顺序。
  • LinkedHashSet中的元素存储在HashMap的key中,value使用一个固定的对象PRESENT。
  • LinkedHashSet在HashSet的基础上增加了维护链表的操作,以实现保持插入顺序的功能。
    在这里插入图片描述
import java.util.*;

public class CollectionExample {
    public static void main(String[] args) {
        // LinkedHashMap示例
        LinkedHashMap<String, Integer> linkedHashMap = new LinkedHashMap<>();
        linkedHashMap.put("One", 1);
        linkedHashMap.put("Two", 2);
        linkedHashMap.put("Three", 3);

        System.out.println("LinkedHashMap:");
        for (Map.Entry<String, Integer> entry : linkedHashMap.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }

        // HashSet示例
        HashSet<String> hashSet = new HashSet<>();
        hashSet.add("Apple");
        hashSet.add("Banana");
        hashSet.add("Orange");

        System.out.println("\nHashSet:");
        for (String item : hashSet) {
            System.out.println(item);
        }

        // LinkedHashSet示例
        LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>();
        linkedHashSet.add("Red");
        linkedHashSet.add("Green");
        linkedHashSet.add("Blue");

        System.out.println("\nLinkedHashSet:");
        for (String color : linkedHashSet) {
            System.out.println(color);
        }
    }
}



上一篇 springboot jpa 分页查询方式(两种)!!!
欢迎点赞、收藏、评论!!!
下一篇 java反射机制

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

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

相关文章

软考高级:信息系统建设原则概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

谷歌浏览器连接上WiFi之后无法正常浏览网站-报错:有一款应用正在组织Chrome安全连接到此网站

现象分析&#xff1a; 出现这个报错&#xff1a;&#xff08;明明已经连接上家里的wifi却还是无法正常登录其他网站&#xff09; 解决办法&#xff1a; 是因为电脑上加了网络代理&#xff0c;删除掉就好了 直接搜索&#xff1a;网络代理 把这2个位置记得清空&#xff0c;然…

守护Web安全:了解Web攻击与防护策略

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

对某旅行APP的检测以及参数计算分析【新手向-Simplesign篇】

简要概述&#xff1a; 目标so&#xff1a;scmain.so 讨论的生成过程&#xff1a;SimpleSign 使用工具&#xff1a;IDA pro 7.7、 Binary Ninja、Frida、Frida Stalker 本篇文章实现&#xff1a; SimpleSign的计算过程&#xff0c;包括前、中、后、变换四个主体阶段&#xf…

蓝桥杯刷题(二)

参考大佬代码&#xff1a;&#xff08;区间合并二分&#xff09; import os import sysn, L map(int, input().split()) # 输入n,len arr [list(map(int, input().split())) for _ in range(n)] # 输入Li,Si def check(Ti, arr, L)->bool:sec [] # 存入已打开的阀门在…

如何防御udp攻击

UDP Flood是互联网上最经典的DDoS&#xff08;Distributed Denial of Service&#xff09;攻击之一。攻击者在短时间内向目标设备发送大量的UDP报文&#xff0c;导致链路拥塞甚至网络瘫痪。一般的UDP报文由攻击工具伪造&#xff0c;通常在数据段具备相同的特征&#xff0c;另一…

从3V到12V,升压芯片该选哪个?

在电子系统设计中&#xff0c;升压芯片很重要&#xff0c;将直接影响到系统的稳定性、效率及噪声&#xff0c;特别是在需要将3V升到12V中&#xff0c;选择合适的升压芯片尤为关键&#xff0c;那么如何针对这个需求&#xff0c;合理选择升压芯片&#xff1f; 1、如何选择升压芯片…

阿里云服务器地域怎么选?速度、价格、备案、内网连接考虑因素

阿里云服务器地域选择方法&#xff0c;如何选择速度更快、网络延迟更低的地域节点&#xff0c;地域指云服务器所在的地理位置区域&#xff0c;地域以城市划分&#xff0c;如北京、杭州、深圳及上海等&#xff0c;如何选择地域&#xff1f;建议根据用户所在地区就近选择地域&…

三井住友保险中国区信息技术部负责人陈婧,将出席“ISIG-RPA超级自动化产业发展峰会”

3月16日&#xff0c;第四届「ISIG中国产业智能大会」将在上海中庚聚龙酒店拉开序幕。本届大会由苏州市金融科技协会指导&#xff0c;企智未来科技&#xff08;RPA中国、AIGC开放社区、LowCode低码时代&#xff09;主办。大会旨在聚合每一位产业成员的力量&#xff0c;深入探索R…

HNU-计算机网络-甘晴void学习感悟

前言 计算机网络其实我没太学懂&#xff0c; 仅从应试来说&#xff0c;考试成绩也不太好。 这也是为什么一直没有更新这一学科的学习感悟。 大三下还是有点闲&#xff0c;一周三天小长假&#xff0c;闲来无事还是给写了。 教材使用这本&#xff1a; 总领 期中考试 30% 期…

DeepLearning in Pytorch|我的第一个NN-共享单车预测

目录 概要 一、数据准备 导入数据 数据可视化 二、设计神经网络 版本一 版本二&#xff08;正片&#xff09; 三、测试 小结 概要 我的第一个深度学习神经网络模型---利用Pytorch设计人工神经网络对某地区租赁单车的使用情况进行预测 输入节点为1个&#xff0c;隐含…

RNN(Recurrent Neural Networks)循环神经网络

循环神经网络&#xff08;Recurrent Neural Network&#xff0c;简称RNN&#xff09;是一种处理序列数据的神经网络结构&#xff0c;它具有记忆能力&#xff0c;能够捕捉序列中的时序信息。RNN在自然语言处理、时间序列预测等方面有着很多的应用。 一、RNN 的基本结构 RNN的包…

数据结构 - 栈和队列

本篇博客将介绍栈和队列的定义以及实现。 1.栈的定义 栈是一种特殊的线性表&#xff0c;只允许在固定的一端进行插入和删除数据&#xff0c;插入数据的一端叫做栈顶&#xff0c;另一端叫做栈底。栈中的数据遵守后进先出的原则 LIFO (Last In First Out)。 插入数据的操作称为压…

设计模式-行为型模式-迭代器模式

迭代器模式&#xff08;Iterator&#xff09;&#xff0c;提供一种方法顺序访问一个聚合对象中各个元素&#xff0c;而又不暴露该对象的内部表示。[DP] 首先&#xff0c;定义一个接口Iterator&#xff0c;它包含了遍历聚合对象所需的方法&#xff1a; public interface Iterato…

spring boot 集成 mysql ,mybatisplus多数据源

1、需要的依赖&#xff0c;版本自行控制 <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId> </dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java<…

python基础——输入与输出【input 和 print】

&#x1f4dd;前言&#xff1a; 上一篇文章python基础——入门必备知识中讲解了一些关于python的基础知识&#xff0c;可以让我们更好的理解程序代码中内容的含义&#xff0c;不至于一头雾水。今天我就来介绍一下&#xff0c;python中两个常见的输入和输出语句 input 和 print …

论文阅读之Multimodal Chain-of-Thought Reasoning in Language Models

文章目录 简介摘要引言多模态思维链推理的挑战多模态CoT框架多模态CoT模型架构细节编码模块融合模块解码模块 实验结果总结 简介 本文主要对2023一篇论文《Multimodal Chain-of-Thought Reasoning in Language Models》主要内容进行介绍。 摘要 大型语言模型&#xff08;LLM…

Dockerfile的使用,怎样制作镜像

Docker 提供了一种更便捷的方式&#xff0c;叫作 Dockerfile docker build命令用于根据给定的Dockerfile构建Docker镜像。 docker build命令参数&#xff1a; --build-arg&#xff0c;设置构建时的变量 --no-cache&#xff0c;默认false。设置该选项&#xff0c;将不使用Build …

Ubuntu18/20运行ORB-SLAM3

ORB-SLAM3复现(ubuntu18/20) 文章目录 ORB-SLAM3复现(ubuntu18/20)1 坐标系与外参Intrinsic parameters2 内参Intrinsic parameters2.1 相机内参① 针孔模型Pinhole② KannalaBrandt8模型③ Rectified相机 2.2 IMU内参 3 VI标定—外参3.1 Visual calibration3.2 Inertial calib…

继承中 隐藏和重写的区别

隐藏&#xff08;重定义&#xff09;&#xff1a;在不同作用域中&#xff08;不同类&#xff09;&#xff0c;函数名相同&#xff0c;当子类对象想要调用这个函数的时候&#xff0c;只能调用到子类中的这个同名函数&#xff0c;父类中的那个被隐藏。子类对象想要调用父类中的那…