Java LinkedList链表、HashSet、HashMap
一、Java LinkedList:
链表(LinkedList)是一种常见的基础数据结构,是一种线性表,在每一个节点里存储下一个节点的地址。链表分为单向链表和双向链表。单向链表包含两个值:当前节点的值和指向下一个节点的链接;双向链表有三个整数值:数值、向后的节点链接、向前的节点链接。
链表(LinkedList)的语法:
// 引入 LinkedList 类import java.util.LinkedList;
LinkedList<E> list = new LinkedList<E>(); // 普通创建方法或者LinkedList<E> list = new LinkedList(Collection<? extends E> c); //使用集合创建链表
1、创建链表:
// 引入 LinkedList 类
import java.util.LinkedList;
public class RunoobTest {
public static void main(String[] args) {
LinkedList<String> sites = new LinkedList<String>();
sites.add("Google");
sites.add("Taobao");
sites.add("Weibo");
System.out.println(sites);
}
}
2、添加元素:
// 引入 LinkedList 类
import java.util.LinkedList;
public class RunoobTest {
public static void main(String[] args) {
LinkedList<String> sites = new LinkedList<String>();
sites.add("Google");
sites.add("Taobao");
// 使用 addFirst() 在头部添加元素
sites.addFirst("Wiki"); //sites.addLast("Wiki");
System.out.println(sites);
}
}
3、移除元素:
/ 引入 LinkedList 类
import java.util.LinkedList;
public class RunoobTest {
public static void main(String[] args) {
LinkedList<String> sites = new LinkedList<String>();
sites.add("Google");
sites.add("Taobao");
sites.add("Weibo");
// 使用 removeFirst() 移除头部元素
sites.removeFirst(); //sites.removeLast();
System.out.println(sites);
}
}
4、获取元素:
// 引入 LinkedList 类
import java.util.LinkedList;
public class RunoobTest {
public static void main(String[] args) {
LinkedList<String> sites = new LinkedList<String>();
sites.add("Google");
sites.add("Taobao");
sites.add("Weibo");
// 使用 getFirst() 获取头部元素
System.out.println(sites.getFirst());// System.out.println(sites.getLast());
}
}
5、迭代元素:
// 引入 LinkedList 类
import java.util.LinkedList;
public class RunoobTest {
public static void main(String[] args) {
LinkedList<String> sites = new LinkedList<String>();
sites.add("Google");
sites.add("Taobao");
sites.add("Weibo");
for (int size = sites.size(), i = 0; i < size; i++) {
System.out.println(sites.get(i));
}
}
}
链表(LinkedList)的常用方法:
| 方法 | 描述 |
| public boolean add(E e) | 链表末尾添加元素,返回是否成功,成功为 true,失败为 false。 |
| public void add(int index, E element) | 向指定位置插入元素。 |
| public boolean addAll(Collection c) | 将一个集合的所有元素添加到链表后面,返回是否成功,成功为 true,失败为 false。 |
| public boolean addAll(int index, Collection c) | 将一个集合的所有元素添加到链表的指定位置后面,返回是否成功,成功为 true,失败为 false。 |
| public void addFirst(E e) | 元素添加到头部。 |
| public void addLast(E e) | 元素添加到尾部。 |
| public boolean offer(E e) | 向链表末尾添加元素,返回是否成功,成功为 true,失败为 false。 |
| public boolean offerFirst(E e) | 头部插入元素,返回是否成功,成功为 true,失败为 false。 |
| public boolean offerLast(E e) | 尾部插入元素,返回是否成功,成功为 true,失败为 false。 |
| public void clear() | 清空链表。 |
| public E removeFirst() | 删除并返回第一个元素。 |
| public E removeLast() | 删除并返回最后一个元素。 |
| public boolean remove(Object o) | 删除某一元素,返回是否成功,成功为 true,失败为 false。 |
| public E remove(int index) | 删除指定位置的元素。 |
| public E poll() | 删除并返回第一个元素。 |
| public E remove() | 删除并返回第一个元素。 |
| public boolean contains(Object o) | 判断是否含有某一元素。 |
| public E get(int index) | 返回指定位置的元素。 |
| public E getFirst() | 返回第一个元素。 |
| public E getLast() | 返回最后一个元素。 |
| public int indexOf(Object o) | 查找指定元素从前往后第一次出现的索引。 |
| public int lastIndexOf(Object o) | 查找指定元素最后一次出现的索引。 |
| public E peek() | 返回第一个元素。 |
| public E element() | 返回第一个元素。 |
| public E peekFirst() | 返回头部元素。 |
| public E peekLast() | 返回尾部元素。 |
| public E set(int index, E element) | 设置指定位置的元素。 |
| public Object clone() | 克隆该列表。 |
| public Iterator descendingIterator() | 返回倒序迭代器。 |
| public int size() | 返回链表元素个数。 |
| public ListIterator listIterator(int index) | 返回从指定位置开始到末尾的迭代器。 |
| public Object[] toArray() | 返回一个由链表元素组成的数组。 |
| public T[] toArray(T[] a) | 返回一个由链表元素转换类型而成的数组。 |
二、Java HashSet:
HashSet是基于HashMap实现的,是不允许有重复元素的集合。HashSet允许有null值。HashSet是无序的,即不会记录插入的顺序。HashSet不是线程安全的,如果多个线程修改HashSet,则最终结果是不确定的。
HashSet基本类型对应的包装类表:
| 基本类型 | 引用类型 |
| boolean | Boolean |
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| char | Character |
1、添加元素:
// 引入 HashSet 类
import java.util.HashSet;
public class RunoobTest {
public static void main(String[] args) {
HashSet<String> sites = new HashSet<String>();
sites.add("Google");
sites.add("Taobao");
sites.add("Zhihu");
System.out.println(sites);
}
}
2、判断元素是否存在:
// 引入 HashSet 类
import java.util.HashSet;
public class RunoobTest {
public static void main(String[] args) {
HashSet<String> sites = new HashSet<String>();
sites.add("Google");
sites.add("Taobao");
sites.add("Zhihu");
System.out.println(sites.contains("Taobao"));
}
}
3、删除元素:
// 引入 HashSet 类
import java.util.HashSet;
public class RunoobTest {
public static void main(String[] args) {
HashSet<String> sites = new HashSet<String>();
sites.add("Google");
sites.add("Taobao");
sites.add("Zhihu");
sites.clear();
System.out.println(sites);
}
}
4、计算大小:
// 引入 HashSet 类
import java.util.HashSet;
public class RunoobTest {
public static void main(String[] args) {
HashSet<String> sites = new HashSet<String>();
sites.add("Google");
sites.add("Taobao");
sites.add("Zhihu");
System.out.println(sites.size());
}
}
5、迭代HashSet:
// 引入 HashSet 类
import java.util.HashSet;
public class RunoobTest {
public static void main(String[] args) {
HashSet<String> sites = new HashSet<String>();
sites.add("Google");
sites.add("Taobao");
sites.add("Zhihu");
for (String i : sites) {
System.out.println(i);
}
}
}
三、Java HashMap:
HashMap是一个散列表,存储的内容是键值对(key-value)映射。HashMap实现Map接口,根据键的HashCode值存储数据,快速访问,最多允许一条记录的键为null,不支持线程同步。HashMap是无序的,不记录插入的顺序。
1、添加元素:
// 引入 HashMap 类
import java.util.HashMap;
public class RunoobTest {
public static void main(String[] args) {
// 创建 HashMap 对象 Sites
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
// 添加键值对
Sites.put(1, "Google");
Sites.put(2, "Taobao");
Sites.put(3, "Zhihu");
System.out.println(Sites);
}
}
2、访问元素:
// 引入 HashMap 类
import java.util.HashMap;
public class RunoobTest {
public static void main(String[] args) {
// 创建 HashMap 对象 Sites
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
// 添加键值对
Sites.put(1, "Google");
Sites.put(2, "Taobao");
Sites.put(3, "Zhihu");
System.out.println(Sites.get(3));
}
}
3、删除元素:
// 引入 HashMap 类
import java.util.HashMap;
public class RunoobTest {
public static void main(String[] args) {
// 创建 HashMap 对象 Sites
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
// 添加键值对
Sites.put(1, "Google");
Sites.put(2, "Taobao");
Sites.put(3, "Zhihu");
Sites.remove(3);
System.out.println(Sites);
}
}
4、计算大小:
// 引入 HashMap 类
import java.util.HashMap;
public class RunoobTest {
public static void main(String[] args) {
// 创建 HashMap 对象 Sites
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
// 添加键值对
Sites.put(1, "Google");
Sites.put(2, "Taobao");
Sites.put(3, "Zhihu");
System.out.println(Sites.size());
}
}
5、迭代HashMap:
// 引入 HashMap 类
import java.util.HashMap;
public class RunoobTest {
public static void main(String[] args) {
// 创建 HashMap 对象 Sites
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
// 添加键值对
Sites.put(1, "Google");
Sites.put(2 "Taobao");
Sites.put(3, "Zhihu");
// 输出 key 和 value
for (Integer i : Sites.keySet()) {
System.out.println("key: " + i + " value: " + Sites.get(i));
}
// 返回所有 value 值
for(String value: Sites.values()) {
// 输出每一个value
System.out.print(value + ", ");
}
}
}
HashMap方法:
| 方法 | 描述 |
| clear() | 删除 hashMap 中的所有键/值对 |
| clone() | 复制一份 hashMap |
| isEmpty() | 判断 hashMap 是否为空 |
| size() | 计算 hashMap 中键/值对的数量 |
| put() | 将键/值对添加到 hashMap 中 |
| putAll() | 将所有键/值对添加到 hashMap 中 |
| putIfAbsent() | 如果 hashMap 中不存在指定的键,则将指定的键/值对插入到 hashMap 中。 |
| remove() | 删除 hashMap 中指定键 key 的映射关系 |
| containsKey() | 检查 hashMap 中是否存在指定的 key 对应的映射关系。 |
| containsValue() | 检查 hashMap 中是否存在指定的 value 对应的映射关系。 |
| replace() | 替换 hashMap 中是指定的 key 对应的 value。 |
| replaceAll() | 将 hashMap 中的所有映射关系替换成给定的函数所执行的结果。 |
| get() | 获取指定 key 对应对 value |
| getOrDefault() | 获取指定 key 对应对 value,如果找不到 key ,则返回设置的默认值 |
| forEach() | 对 hashMap 中的每个映射执行指定的操作。 |
| entrySet() | 返回 hashMap 中所有映射项的集合集合视图。 |
| keySet() | 返回 hashMap 中所有 key 组成的集合视图。 |
| values() | 返回 hashMap 中存在的所有 value 值。 |
| merge() | 添加键值对到 hashMap 中 |
| compute() | 对 hashMap 中指定 key 的值进行重新计算 |
| computeIfAbsent() | 对 hashMap 中指定 key 的值进行重新计算,如果不存在这个 key,则添加到 hasMap 中 |
| computeIfPresent() | 对 hashMap 中指定 key 的值进行重新计算,前提是该 key 存在于 hashMap 中。 |
相关文章:
Java LinkedList链表、HashSet、HashMap
一、Java LinkedList: 链表(LinkedList)是一种常见的基础数据结构,是一种线性表,在每一个节点里存储下一个节点的地址。链表分为单向链表和双向链表。单向链表包含两个值:当前节点的值和指向下一个节点的链…...
Linux中清除cache/buffer方法
1、查看Linux中的cache/buffer情况: free -h 2、仅清除页面缓存PageCache方法: echo 1 > /proc/sys/vm/drop_caches 3、清除目录项和inode节点: echo 2 > /proc/sys/vm/drop_caches 4、清除页面缓存、目录项和inode节点:…...
github批量仓库克隆,git clone某个用户的所有仓库
利用github的api工具, 首先拿到用户名为kevin的所有仓库的url: curl "https://api.github.com/users/kevin/repos?per_page100&&page1" | grep -w clone_url >clone.txt过滤一下: grep -o https://[^"]* clone…...
防爆智能安全帽、防爆手持终端,防爆智能矿灯守护安全,在煤矿安全生产远程可视化监管中的应用
煤矿安全新守护:如何通过防爆智能装备实现远程可视化监管 煤矿是国民经济的重要支柱产业,但长期以来,安全生产事故的频发一直是困扰煤矿行业发展的严峻问题。安全生产事故不仅危及矿工的生命安全,也对企业和地方经济造成了重大的…...
数据结构与算法【B树】的Java实现+图解
目录 B树 特性 实现 节点准备 大体框架 实现分裂 实现新增 实现删除 完整代码 B树 也是一种自平衡的树形数据结构,主要用于管理磁盘上的数据管理(减少磁盘IO次数)。而之前说的AVL树与红黑树适合用于内存数据管理。存储一个100w的数…...
2024中国人民大学计算机考研分析
24计算机考研|上岸指南 中国人民大学 中国人民大学计算机考研招生学院是信息学院。目前均已出拟录取名单。 中国人民大学在1978年创立了经济信息管理系,它是国内最早建立的将数学与信息技术在经济管理领域应用为特色的系科。1986年,在原系计算站的基础…...
无人智能货柜:提升购物体验
无人智能货柜:提升购物体验 随着移动支付的普及,人们日常生活中的主要场景已经渗透了这一支付方式。同时,无人智能货柜作为购物的重要渠道,正在崭露头角。通过人工智能、图像识别和物联网技术的应用,无人智能货柜将使购…...
【OpenCV实现图像:可视化目标检测框】
文章目录 概要画框函数代码实现标签美化角点美化透明效果小结 概要 目标检测框的可视化在计算机视觉和机器学习领域中是一项重要的任务,有助于直观地理解和评估目标检测算法的性能。通过使用Python和相关的图像处理库,可以轻松实现目标检测框的可视化。…...
C/C++---------------LeetCode第1436. 旅行终点站
旅行的终点站 题目及要求哈希算法在main内使用 题目及要求 给你一份旅游线路图,该线路图中的旅行线路用数组 paths 表示,其中 paths[i] [cityAi, cityBi] 表示该线路将会从 cityAi 直接前往 cityBi 。请你找出这次旅行的终点站,即没有任何可…...
如何在AD上创建完整的项目
首先,我们先安装好AD,这里我使用的是AD22,安装过程如下: Altium Designer 22下载安装教程-CSDN博客 Altium Designer 22是全球领先的PCB设计软件之一,为电路板设计师提供了一种集成的解决方案,旨在简化和加…...
实时错误’-2147217887‘多步OLB DB 操作产生错误。如果可能,请检查OLE DB状态值
目录 背景问题问题分析问题解决 错误解决与定位技巧总结 背景 仍旧是学生信息管理系统的问题,当时做的时候没发现这么多问题呢,只能说明一件事,做的时候没有站在用户的角度考虑需求,设置了什么内容,就按照设置好的去测…...
九、ffmpeg命令转封装
开了几天小差,今天继续学习ffmpeg。 准备测试使用的视频,并查看其信息 # 查看视频信息。使用Mediainfo也可以 ffprobe test.mp4 视频格式的信息如下。 保持编码格式:ffmpeg -i test.mp4 -vcodec copy -acodec copy test_copy.tsffmpeg -i…...
数字逻辑电路基础-时序逻辑电路之锁存器
文章目录 一、锁存器简介二、verilog源码三、综合及仿真结果 一、锁存器简介 本文介绍数字逻辑电路中一种常用的基础时序逻辑电路-锁存,顾名思义,它的功能就是将输入在控制信号有效时透明传输到输出端,当控制信号无效时,输出值保…...
Python---global关键字---设置全局变量
global 英 /ˈɡləʊb(ə)l/ adj. 全球的,全世界的;全面的,整体的;(计算机)全局的;球形的 需求:如果有一个数据,在函数A和函数B中都要使用,该怎么办&…...
bug场景记录
项目场景: mapper.xml文件中sql语句执行失败,显示输入的参数数量不对 问题描述 <select id"page" resultType"com.sky.entity.Employee">select * from employee<where><if test"name ! null and name !"…...
【云备份】第三方库的认识与使用
文章目录 json库粗略认识详细认识writer 类reader类jsoncpp序列化实现jsoncpp反序列化实现 bundle文件压缩库简单认识bundle库实现文件压缩bundle库实现文件解压缩 httplib库Request类Response类Server类Client类 json库 粗略认识 json是一种数据交换格式,采用完全…...
6.2.SDP协议
那今天呢?我们来介绍一下sdp协议,那实际上呢?sdp协议非常的简单。我们如果拿到一个stp的文档去看的话,那你要分阅里边的所有的内容会觉得很枯燥,但实际上呢,如果我们按照这张图所展示的结构去看stp的话。你…...
[汇编实操]DOSBox工具安装——Ubuntu18.04系统
一、下载&安装 sudo apt install -y dosbox 二、启动 dosbox 三、C盘挂载 将上述文件下载放在任意路径,将DEBUG目录映射为虚拟C盘 MASM.EXE 是用来编译的,LINK.EXE 用来链接,这俩是必须的。 执行如下命令: mount c /m…...
前端 HTML 的 DOM 事件相关知识有哪些?
HTML 的 DOM 事件是指在网页上发生的各种事件,如点击、鼠标移动、键盘输入等。 通过 JavaScript 脚本可以对这些事件进行监听和处理,以实现交互效果。以下是一些常见的 DOM 事件及其相关知识点: 1、click:点击事件,在…...
Mac自带的看图如何连续查看多张图片
一、问题 mac看访达里的图片时,双击打开一张图片,然后按上下左右键都没法切换到另外的图片。而且也没找到像window一样单击缩略图可以看到预览图。其实是自己不懂得怎么使用,哈哈哈😂 二、方法 2.1、图标方式 可以看到缩略图&a…...
挖掘机柴油机多工况智能故障识别系统设计【附代码】
✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,查看文章底部二维码(1)基于CAN总线多源数据采集与分层工况判别模型&#…...
RTL设计和HLS高层次设计
一、RTL设计和HLS高层次设计 1.rtl设计需要关注微架构的决策,高层次设计不需要制定微架构决策,关注的是宏框架设计; 2.FSM状态机的创建、数据的路径、寄存器流水线这些细节留给HLS工具编译器来处理; 3.高层次综合通过提供的约束来…...
React Native Draggable FlatList与Swipeable Item集成:实现多功能交互列表
React Native Draggable FlatList与Swipeable Item集成:实现多功能交互列表 【免费下载链接】react-native-draggable-flatlist A drag-and-drop-enabled FlatList for React Native 项目地址: https://gitcode.com/gh_mirrors/re/react-native-draggable-flatlis…...
2026届必备的五大降重复率网站实际效果
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 于内容创作进程里,若打算切实降低AIGC(人工智能生成内容)…...
分片 vs 分布式:弹性与高可用性背后的数学原理
分片 vs. 分布式:弹性与高可用性背后的数学原理 Chris Smith July 14, 2025 原文链接 概率论(Probability theory)是数学中研究不确定性的分支。它帮助我们理解不同结果发生的可能性。在本文中,我们将考虑两种水平扩展数据库的替…...
PoseFormerV2 训练完全指南:理论与实战
PoseFormerV2 训练完全指南:理论与实战 目录 引言:从 PoseFormer 到 PoseFormerV2 PoseFormerV2 核心技术原理 环境配置与项目结构 数据集准备与预处理 论文基线精度复现 目标精度 9.0 的优化策略 模型架构的定制与实现 训练配置的精细调优 完整训练代码详解 评估与验证 常见…...
C语言Modbus网关安全加固实战:7步实现TLS/DTLS+身份鉴权+报文签名(附NASA级白皮书级代码片段)
更多请点击: https://intelliparadigm.com 第一章:C语言Modbus网关安全加固的工业级必要性 在工业物联网(IIoT)边缘节点中,基于C语言实现的Modbus网关常作为PLC、传感器与上位SCADA系统之间的关键协议转换枢纽。然而&…...
基于Hermes Agent与Railway的自主AI智能体一键部署实战
1. 项目概述:一键部署你的智能AI助手 最近在折腾AI智能体,发现了一个挺有意思的项目:Hermes Agent。简单来说,这是一个能自我进化的自主AI智能体,最吸引我的是它原生支持Telegram,这意味着你可以直接在Tel…...
[Rust][ARM64] 八、加载下一阶段——从 SD 卡读取内核并移交控制权
系列进度 第七篇:中断处理与异常向量表 第八篇(本文):加载下一阶段(SD 卡 + jump_to) 第九篇:ARM Trusted Firmware(ATF) BootROM 的最终使命 一个完整的裸机 BootROM 流程: GPU 固件(start4.elf)└→ 加载 kernel8.img 到 0x80000└→ 我们的裸机 BootROM├ 初始…...
E7Helper:第七史诗自动化助手完整使用指南
E7Helper:第七史诗自动化助手完整使用指南 【免费下载链接】e7Helper 【Epic Seven Auto Bot】第七史诗多功能覆盖脚本(刷书签🍃,挂讨伐、后记、祭坛✌️,挂JJC等📛,多服务器支持📺,…...
