Java 集合有序性与重复性总结及记忆技巧
Java 集合有序性与重复性总结及记忆技巧
一、集合分类速查表
集合类型 | 是否有序 | 是否允许重复 | 记忆口诀 |
---|---|---|---|
ArrayList | ✅ 有序(插入顺序) | ✅ 可重复 | "数组列表,顺序记牢" |
LinkedList | ✅ 有序(插入顺序) | ✅ 可重复 | "链表结构,先来后到" |
HashSet | ❌ 无序(插入时没有顺序) | ❌ 不可重复 | "哈希散列,乱序唯一" |
LinkedHashSet | ✅ 有序(插入顺序) | ❌ 不可重复 | "链表哈希,有序唯一" |
TreeSet | ✅ 有序(自然/定制排序) | ❌ 不可重复 | "树形排序,规则唯一" |
HashMap | ❌ 无序 | Key不可重复 | "哈希大哥,乱序当家" |
LinkedHashMap | ✅ 有序(插入/访问顺序) | Key不可重复 | "链表哈希,顺序钥匙" |
TreeMap | ✅ 有序(Key排序) | Key不可重复 | "树形钥匙,排队进门" |
ArrayDeque | ✅ 有序(队列/栈顺序) | ✅ 可重复 | "双端队列,先进先出" |
二、记忆方法大全
1. 按数据结构记忆
-
数组/链表结构(ArrayList/LinkedList/ArrayDeque):
→ 有序 + 可重复(像排队,先来后到,可以有人同名) -
哈希表结构(HashSet/HashMap):
→ 无序 + 不可重复(像丢进桶里的球,乱序且唯一) -
链表+哈希组合(LinkedHashSet/LinkedHashMap):
→ 有序 + 不可重复(用链表记录顺序,但内容唯一) -
树形结构(TreeSet/TreeMap):
→ 排序 + 不可重复(像字典,按字母排序且单词唯一)
2. 命名规律记忆
-
带"Linked":有序(插入顺序)
LinkedHashSet
、LinkedHashMap
-
带"Tree":排序(自然/定制顺序)
TreeSet
、TreeMap
-
纯"Hash":无序
HashSet
、HashMap
-
带"List":有序+可重复
ArrayList
、LinkedList
3. 生活场景联想
-
ArrayList → 班级点名册
(按学号顺序记录,允许同名同姓) -
HashSet → 抽奖箱
(名字丢进去乱序混合,但每人只能中奖一次) -
TreeSet → 字典目录
(按字母排序,每个单词唯一) -
LinkedHashMap → 餐厅排队系统
(按排队顺序叫号,但每个号码唯一)
三、面试高频问题
1. 如何选择集合?
-
需要快速访问且不关心顺序? →
HashMap
/HashSet
-
需要保持插入顺序? →
LinkedHashMap
/LinkedHashSet
-
需要自动排序? →
TreeMap
/TreeSet
-
需要允许重复? →
ArrayList
/LinkedList
2. 为什么Set不允许重复?
-
底层用Map实现(如HashSet用HashMap),重复元素会被覆盖:
java
// HashSet的add方法源码
public boolean add(E e) {return map.put(e, PRESENT) == null; // 用HashMap的key去重
}
3. 如何让List去重?
-
转换为Set:
java
List<String> list = new ArrayList<>(); Set<String> set = new LinkedHashSet<>(list); // 保留顺序去重
四、总结图示
mermaid
pietitle 集合特性占比"有序+可重复" : 3 (ArrayList/LinkedList/ArrayDeque)"有序+不可重复" : 3 (LinkedHashSet/TreeSet/LinkedHashMap/TreeMap)"无序+不可重复" : 2 (HashSet/HashMap)
一句话总结:
"数组链表可重复,哈希乱序需唯一,带Link保顺序,带Tree会排序"
相关文章:
Java 集合有序性与重复性总结及记忆技巧
Java 集合有序性与重复性总结及记忆技巧 一、集合分类速查表 集合类型是否有序是否允许重复记忆口诀ArrayList✅ 有序(插入顺序)✅ 可重复"数组列表,顺序记牢"LinkedList✅ 有序(插入顺序)✅ 可重复"…...
机器学习--词向量转换
引言 在自然语言处理(NLP)的广阔领域中,计算机面临的一大挑战是理解人类语言的丰富性和复杂性。文本数据对于机器而言,最初只是一连串难以理解的字符。词向量转换便成为了一座关键的桥梁,它将文本中的单词映射为数值向…...
时序数据异常检测-综述
更新中 异常检测基本概念 广义的Out-of-Distribution(广义的OOD)来描述异常检测的相关问题。OOD包括五个相关的子领域,分别为Anomaly Detection(AD)、Novelty Detection(ND)、Open Set Recogntion(OSR)、Out-of-Distribution(OOD)和Outlier Detection(OD)。这5个…...
2025年Python的主要应用场景
李升伟 编译 Python在2025年仍是最受欢迎和强大的编程语言之一。其简洁易读的语法以及庞大的库生态系统,使其成为各行业开发者的首选。无论是构建复杂的数据管道,还是自动化重复性任务,Python都能提供广泛的应用场景,以实现快速、…...
树的深度遍历和广度遍历
目录 一、深度优先遍历(递归)二叉树的深度优先遍历(递归) 二、广度优先遍历二叉树的广度遍历 一、深度优先遍历(递归) #include<iostream> #include<vector>using namespace std;const int N1…...
C++函数如何返回多个参数
在编程中,我们经常会遇到需要函数返回多个值的场景。虽然 C 函数不能直接返回多个参数,但通过一些间接的方法,我们可以轻松实现这一需求。本文将详细介绍几种常见的实现方式,并分析它们的优缺点和适用场景。 1. 引言 在 C 中&…...
Python 实现的运筹优化系统代码详解(0-1规划指派问题)
一、引言 在数学建模的广阔领域中,指派问题作为一类经典且重要的组合优化问题,频繁出现在各类实际场景里。例如,在人力资源管理中,如何将不同技能水平的员工高效地分配到各个项目,以实现项目成本最小化或收益最大化&am…...
深度集成学习不均衡样本图像分类
用五个不同的网络,然后对分类概率进行平均,得到分类结果。基本上分类精度可以提升10% 1.导入基本库 import torch import copy import torch.nn as nn import torchvision.models as models from torchvision import datasets from torchvision import…...
ubuntu 20.04 复现 LVI-SAM
1.环境配置 ubuntu20.04 ROS-Noetic GTSAM 4.0.2 Ceres 1.14.0 前面的我都安装过了,但Ceres 我安装的是 2.2.0,现在安装Ceres 1.14.0 sudo apt-get update sudo apt-get install cmake libgoogle-glog-dev libgflags-dev libatlas-base-dev libeigen3-dev lib…...
每日OJ题_剑指offer数组篇(剑指offer04+剑指offer11+剑指offer21)
目录 剑指 Offer 04二维数组中的查找 代码解析 剑指 Offer 11旋转数组的最小数字 代码解析1 代码解析2 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 代码解析1 代码解析2 剑指 Offer 04二维数组中的查找 LCR 121. 寻找目标值 - 二维数组 - 力扣(LeetCo…...
使用 `tcpdump` 抓取 LiDAR 网络数据包详解
在调试机器人系统或自动驾驶平台时,我们经常需要分析网络中的 LiDAR(激光雷达)数据流。本文将介绍如何使用 tcpdump 工具对指定 IP 的数据包进行抓取和分析,特别是 LiDAR 数据的典型 UDP 报文。 一、什么是 tcpdump? …...
【NLP 55、强化学习与NLP】
万事开头难,苦尽便是甜 —— 25.4.8 一、什么是强化学习 强化学习和有监督学习是机器学习中的两种不同的学习范式 强化学习:目标是让智能体通过与环境的交互,学习到一个最优策略以最大化长期累积奖励。 不告诉具体路线,首先去做…...
【Linux】单例模式及其在线程池中的应用
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
Ansible的使用2
#### 一、Ansible变量 ##### facts变量 > facts组件是Ansible用于采集被控节点机器的设备信息,比如IP地址、操作系统、以太网设备、mac 地址、时间/日期相关数据,硬件信息等 - setup模块 - 用于获取所有facts信息 shell ## 常用参数 filter…...
十三届蓝桥杯省赛A组 扫描游戏
#算法/线段树 #算法/快读 参考题解: 题解参考 这题思路: 先将坐标进行极角排序,按照顺时针的先后顺序,如果出现两个坐标在一个象限中,我们就先判断这两个坐标是否在同一条直线上,如果在同一条直线上,我们按照离原点最近的长度进行排序 之后,我们通过线段树的方法,定义结点tr[i]…...
Python 序列构成的数组(list.sort方法和内置函数sorted)
list.sort方法和内置函数sorted list.sort 方法会就地排序列表,也就是说不会把原列表复制一份。这 也是这个方法的返回值是 None 的原因,提醒你本方法不会新建一个列 表。在这种情况下返回 None 其实是 Python 的一个惯例:如果一个函数 或者…...
C++类与对象进阶知识深度解析
目录 一、再谈构造函数 (一)构造函数体赋值 (二)初始化列表 (三)成员变量初始化顺序 (四)explicit关键字 二、static成员 (一)概念 (二&am…...
【机器学习案列】基于LightGBM算法的互联网防火墙异常行为检测:数据不平衡的解决方案
🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…...
详解minio部署
MinIO 是一款高性能、开源的分布式对象存储解决方案,专为存储非结构化数据(如图片、视频、备份数据等)而设计。MinIO 在吞吐量和延迟上表现出高性能提供与 Amazon S3 完全兼容的 API,支持水平扩展,支持端到端加密、访问…...
校园AI体育:科技赋能教育,运动点亮未来
校园AI体育:科技赋能教育,运动点亮未来 在数字化浪潮的推动下,人工智能(AI)已经悄然走进校园,成为教育领域的一股创新力量。而在体育教育中,AI技术的引入更是为传统体育教学注入了新的活力。校…...
LeetCode算法题(Go语言实现)_35
题目 给你一棵根为 root 的二叉树,请你返回二叉树中好节点的数目。 「好节点」X 定义为:从根到该节点 X 所经过的节点中,没有任何节点的值大于 X 的值。 一、代码实现 func goodNodes(root *TreeNode) int {if root nil {return 0}return d…...
ROS2_control 对机器人控制(不完整,有时间再更新)
ROS2_control 对机器人控制 安装与介绍安装介绍 使用gz 中写法.yaml文件中写法type: joint_state_broadcaster/JointStateBroadcaster的来源 命令接口关节控制command_interfacetransmission CMakelist.txt与package.xml文件 gz_ros2_control与自定义插件例子描述自定义插件使用…...
SAP-ABAP:SAP Enterprise Services Repository(ESR)技术全景解析
以下是对SAP PO中Enterprise Services Repository(ESR)的深度技术解析,包含详细架构设计、开发实践及企业级应用方案: SAP Enterprise Services Repository(ESR)技术全景解析 一、ESR核心架构与组件关系 1. 技术堆栈定位 ┌─────────────────────…...
每日一道leetcode
2130. 链表最大孪生和 - 力扣(LeetCode) 题目 在一个大小为 n 且 n 为 偶数 的链表中,对于 0 < i < (n / 2) - 1 的 i ,第 i 个节点(下标从 0 开始)的孪生节点为第 (n-1-i) 个节点 。 比方说&…...
通过Aop实现限制修改删除指定账号的数据
1、需求 对于Teach账号创建的数据,其他用户仅仅只有查询的权限,而不能修改和删除。并且部分接口只允许Teach账号访问 2、实现思路 在删除和修改时往往需要传递数据的id,进而可以通过id查询该数据是否由Teach账号创建。当然我们可以在每个删…...
递归实现指数型枚举
我们以n2 为例 我们每次都有选和不选两种 方案,对于每个数字 核心代码 tatic void dfs(int u) { // u代表当前处理的数字if (u > n) { // 终止条件:处理完所有数字for (int i 1; i < n; i) { // 遍历所有数字if (nums[i]) {…...
无代码国产流程引擎 FlowLong 1.1.6 发布
无代码国产流程引擎 FlowLong 1.1.6 于 2025 年 4 月 7 日发布。 FlowLong 是一款纯血国产自研的工作流引擎,具有以下特点: 核心精简:引擎核心仅 8 张表实现逻辑数据存储,采用 json 数据格式存储模型,结构简洁直观。组…...
软考高项-考前冲刺资料-M 类【项目管理类】【光头张老师出品】
重点考点汇总 一、案例答题时需要注意: 1.条目写要清晰,要标注 1、2、3、4、… 2.关键字突出,关键字一定是专业词汇如 “监控”“控制成本”…等等,代替自己平时工作中的用此。 3.尽量多写几点,错了不扣分,但是避免重复写,避免写了一大段的内容,但是表达的是一个观点。…...
LLM Agents项目推荐:MetaGPT、AutoGen、AgentVerse详解
这一部分我们将深入介绍三大备受关注的LLM Agents项目:MetaGPT、AutoGen和AgentVerse,包括它们的背景、设计思路、主要功能、技术亮点以及典型应用场景。 1. MetaGPT:让AI像软件工程团队一样协作 项目背景 MetaGPT由Huang et al.于2023年提…...
win10家庭版安装Docker
win10家庭版本中成功安装Docker,亲测! 1、下载Docker 下载地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ Docker的有CE和EE版,CE为免费版,EE由公司支持的付费版,在此选择CE版本…...
mapbox基础,加载ESRI OpenStreetMap开放街景标准风格矢量图
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.1 ☘️mapboxgl.Map style属性二、🍀加载ESRI OpenStreetMap开放街景标准风…...
【网络安全 | 漏洞挖掘】通过分析JS文件实现接口未授权访问与账户接管
未经许可,不得转载。 文中所述漏洞均已修复,未经授权不得进行非法渗透测试。 文章目录 正文正文 大约一年前,我给我妈买了一辆 2023 款斯巴鲁 Impreza,前提是她得答应我,之后我可以借来做一次“白帽渗透测试”。过去几年我一直在研究其他车企的安全问题,但一直没有机会仔…...
引领东方语言识别新风潮!Dolphin语音模型开创自动语音识别(ASR)新时代
引领东方语言识别新风潮!Dolphin语音模型开创自动语音识别(ASR)新时代 在全球语音识别技术领域,随着人工智能的飞速发展,许多技术巨头纷纷推出了多语言支持的语音识别系统,如Whisper等。然而,尽…...
运动规划实战案例 | 基于四叉树分解的路径规划(附ROS C++/Python仿真)
目录 1 为什么需要四叉树?2 基于四叉树的路径规划2.1 分层抽象2.2 路图搜索2.3 动态剪枝 3 算法仿真3.1 ROS C算法仿真3.2 Python算法仿真 1 为什么需要四叉树? 路径规划的本质是在给定环境中寻找从起点到终点的最优或可行路径,其核心挑战在…...
java设计模式-享元模式
享元模式 基本介绍 1、享元模式(flyweight Pattern),也叫作蝇量模式:运用在共享技术有效的支持大量细粒度的对象。 2、常用语系统底层开发,解决系统的性能问题。像 数据库连接,里面都是创建好的连接对象,在这些连接对…...
Java 大视界 -- Java 大数据在智慧水利水资源调度与水情预测中的应用创新(180)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
自动驾驶---苹果又要造车了吗?
1 背景 巴菲特一直认为造车的企业是一个做 “苦生意” 的企业,可能苹果高层也意识到了这一点, 于是造车计划在去年被终止。 但2025年2月份,苹果公司署名发了一篇自动驾驶领域的论文《Robust Autonomy Emerges from Self-Play》,详…...
Redis主从复制:告别单身Redis!
目录 一、 为什么需要主从复制?🤔二、 如何搭建主从架构?前提条件✅步骤📁 创建工作目录📜 创建 Docker Compose 配置文件🚀 启动所有 Redis🔍 验证主从状态 💡 重要提示和后续改进 …...
PHP:将关联数组转换为索引数组的完整示例
处理之前的数据 头和行在一起显示 // 执行SQL查询后的原始数据(假设查询返回3条记录) $rawData [[wip_entity_name > JOB001,primary_item > ITEM001,primary_name > 主产品1,primary_desc > 主产品描述1,start_quantity > 100,quanti…...
27.[2019红帽杯]easyRE1(保姆教程)
收到文件,.elf 文件,ExeinfoPE查看一下基础信息。无壳,64bit。 把文件拖入IDA工具,查看一下。 点击关键字,ctrl x 交叉搜索一下位置,跟进,顺便菜单左侧 Edit --> Plugins--> findcrypt …...
【Redis】Redis实现分布式锁
1. 基于Redis 1.1 加锁 setnx lockKey uniqueValue1.2 解锁 基于Lua脚本保证解锁的原子性。Redis在执行Lua脚本时,可以以原子性的方式执行,确保原子性。 if redis.call("get", keys[1]) argv[1] then return redis.call("del", …...
AI大模型底层技术——Scaling Law
0. 定义 Scaling Law 是描述 AI 模型性能随关键因素(如参数量、数据量、计算量)增长而变化的数学规律,通常表现为幂律关系。 历史里程碑: **OpenAI 2020 年论文首次系统提出语言模型的缩放定律**DeepMind、Google 等机构后续发表…...
Spring MVC 国际化机制详解(MessageSource 接口体系)
Spring MVC 国际化机制详解(MessageSource 接口体系) 1. 核心接口与实现类详解 接口/类名描述功能特性适用场景MessageSource核心接口,定义消息解析能力支持参数化消息(如{0}占位符)所有国际化场景的基础接口Resource…...
java学习笔记13——IO流
File 类的使用 常用构造器 路径分隔符 常用方法 File类的获取功能和重命名功能 File 类的判断功能 File类的创建功能和删除功能 File 类的使用 总结: 1.File类的理解 > File类位于java.io包下,本章中涉及到的相关流也都声明在java.io包下 > File…...
防DDoS流量清洗核心机制解析
本文深度剖析DDoS流量清洗技术演进路径,揭示混合云清洗系统的四层过滤架构,结合2023年新型反射攻击案例,提出基于AI行为分析的动态防御策略。通过Gartner最新攻防效能数据与金融行业实战方案,阐明流量清洗系统在误判率、清洗延迟、…...
边缘计算革命:低功耗GPU在自动驾驶实时决策中的应用
边缘计算革命:低功耗GPU在自动驾驶实时决策中的应用 ——分析NVIDIA Jetson与华为昇腾的嵌入式方案差异 一、自动驾驶的实时决策挑战与边缘计算需求 自动驾驶系统需在30ms内完成环境感知、路径规划与车辆控制的全流程闭环。传统云端计算受限于网络延迟…...
ubuntu24.04-MyEclipse的项目导入到 IDEA中
用myeclipse创建的一个web项目, jdk1.7,tomcat7,mysql8.0,导入到idea项目中 1.导入现有项目 1.打开IDEA,选择“Import Project”进入下一步 2.选择所需要导入的项目,点击“OK” 3.点击创建一个新的项目,然后下一步 4.直接点…...
基于SpringBoot的律师事务所案件管理系统【附源码】
基于SpringBoot的律师事务所案件管理系统(源码L文说明文档) 目录 4 系统设计 4.1界面设计原则 4.2功能结构设计 4.3数据库设计 4.3.1属性图 4.3.2 数据库物理设计 5 系统实现 5.1客户信息管理 5.2 律师…...
电力网关:推动电力物联网及电力通信系统革新
在“双碳”目标与新型电力系统建设的背景下,电力行业正加速向数字化、智能化、绿色化转型。作为国内领先的电力物联网解决方案提供商,厦门计讯物联科技有限公司(以下简称“计讯物联”)依托自主研发的电力专用网关、边缘计算平台及…...
Android系统的Wi-Fi系统框架和详细启动流程
目录 一、前言 二、系统架构层次 1、应用层 2、Framework层 3、HAL层 4、驱动层 三、Wi-Fi 目录树结构 四、系统流程 1、应用层请求 2、Wi-Fi管理服务处理 3、硬件交互 4、数据处理与事件通知 5.连接管理 6.状态维护 五、WiFi启动流程及函数调用…...