集合及映射
1、集合类图
1)ArrayList与LinkedList 区别
LinkedList 实现了双向队列的接口,对于数据的插入速度较快,只需要修改前后的指向即可;ArrayList对于特定位置插入数据,需要移动特定位置后面的数据,有额外开销
public class Test {public static void main(String[] args) {List<String> list = new ArrayList<String>();list.add("a");list.add("b");list.add("c");list.add(1,"d");//相对LinkedList插入速度较慢System.out.println(list);System.out.println(list.get(1));//直接通过数据下标index获取数据,查询速度相对LinkedList较快List<String> linkedList = new LinkedList<>();linkedList.add("a");linkedList.add("b");linkedList.add("c");linkedList.add(2,"d");//相对ArrayList插入速度较快System.out.println(linkedList.get(1));//需要遍历整个队列,查询速度相对ArrayList较慢System.out.println(linkedList);}
}
2)Set 存储的元素不重复,元素重复的标准如下:
i:先判断集合元素的hashCode是否在集合里面存在,不存在认为是不重复的,直接插入进集合,插入集合的位置按照hash出来散列值排序 ii:如果集合元素的hashCode在集合里面存在,需要再判断集合元素的内容是否一致(存在hash冲突,即不同的元素hash后产生相同的hashCode),调用equals方法,如果内容不一致,可以插入 iii:调用equals方法,如果内容一致,说明是重复,则不插入集合
import lombok.AllArgsConstructor;
import lombok.Data;import java.util.Objects;@Data
@AllArgsConstructor
public class Student {private String num;//学号private String name;private int age;@Overridepublic int hashCode() {return num.hashCode();//用学号计算hashCode}@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 && Objects.equals(num, student.num) && Objects.equals(name, student.name);}@Overridepublic String toString() {return this.hashCode() + "-Student{" +"num='" + num + '\'' +", name='" + name + '\'' +", age=" + age +'}';}
}
import java.util.*;public class Test {public static void main(String[] args) {Set<Student> set = new HashSet<Student>();/*** set集合里面内容不可重复,判断重复的标准是:* 1)先判断集合元素的hashCode是否在集合里面存在,不存在认为是不重复的,直接插入进集合,插入集合的位置按照hash出来散列值排序* 2)如果集合元素的hashCode在集合里面存在,需要再判断集合元素的内容是否一致(存在hash冲突,即不同的元素hash后产生相同的hashCode),* 调用equals方法,如果内容不一致,可以插入* 3)调用equals方法,如果内容一致,说明是重复,则不插入集合*/Student s1 = new Student("1", "张三", 18);//hashCode:49Student s2 = new Student("2", "李四", 19);//hashCode:50set.add(s1);set.add(s2);System.out.println(set);//[49-Student{num='1', name='张三', age=18}, 50-Student{num='2', name='李四', age=19}]Student s4 = new Student("1", "赵六", 18);//hashCode:49,此时集合中已经存在hashCode=49的元素boolean add = set.add(s4);//true hashCode与s1一致,但是内容与s1不同,可以插入System.out.println(set);//[49-Student{num='1', name='张三', age=18}, 49-Student{num='1', name='赵六', age=18}, 50-Student{num='2', name='李四', age=19}]Student s5 = new Student("1", "张三", 18);//hashCode:49,内容与s1完全一致,插入不成功add = set.add(s5);System.out.println(add);//false}
}
3)TreeSet 实现了SortedSet 接口,存放的元素可以按照自定义的顺序排序,示例如下:按照学生年龄升序排序
import java.util.*;public class Test {public static void main(String[] args) {Set<Student> set = new TreeSet<>((s1,s2) -> {return s1.getAge() - s2.getAge();//定义排序的集合,按照学生年龄升序排序});Student s1 = new Student("1", "张三", 20);Student s2 = new Student("2", "李四", 25);Student s3 = new Student("3", "李四", 18);set.add(s1);set.add(s2);set.add(s3);//[51-Student{num='3', name='李四', age=18}, 49-Student{num='1', name='张三', age=20}, 50-Student{num='2', name='李四', age=25}]System.out.println(set);}
}
2、映射类图:
1)HashMap、LinkedHashMap、TreeMap 区别
HashMap: 按照key hash后的值大小顺序存放元素;
LinkedHashMap:有链表特性,按照映射插入顺序存放元素
TreeMap:按照key的自然顺序或自定义排序key进行存放元素
示例代码如下:
import java.util.*;public class Test {public static void main(String[] args) {Map<String,Object> map = new HashMap<>();map.put("name","张三");map.put("age","18");map.put("num","001");//按照key-hash后的值大小顺序放入映射中System.out.println(map);//{num=001, name=张三, age=18}Map<String,Object> linkedMap = new LinkedHashMap<>();linkedMap.put("name","张三");linkedMap.put("age","18");linkedMap.put("num","001");//LinkedHashMap,有链表特性,可以保证插入的顺序就是映射的顺序System.out.println(linkedMap);//{name=张三, age=18, num=001}Map<String,String> treeMap = new TreeMap<String,String>((s1,s2) -> {return s2.compareTo(s1);//自定义排序,按照字符串降序排列});treeMap.put("A1","A1");treeMap.put("A2","A2");treeMap.put("B1","B1");System.out.println(treeMap);//{B1=B1, A2=A2, A1=A1}//遍历treeMap.forEach((key,value) -> {System.out.println(key + ":" + value);});}
}
相关文章:

集合及映射
1、集合类图 1)ArrayList与LinkedList 区别 LinkedList 实现了双向队列的接口,对于数据的插入速度较快,只需要修改前后的指向即可;ArrayList对于特定位置插入数据,需要移动特定位置后面的数据,有额外开销 …...

软考基础知识之计算机网络
目录 前言 网络架构与协议 网络互联模型 1、OSI/RM 各层的功能 2、TCP/IP 结构模型 常见的网络协议 1、应用层协议 2、传输层协议 3、网络层协议 IPv6 前言 从古代的驿站、 八百里快马, 到近代的电报、 电话, 人类对于通信的追求从未间断&…...

云手机怎样简化海外社媒平台运营
随着越来越多的卖家希望拓展海外市场,运营TikTok、Facebook等社交媒体平台已经成为吸引流量和促进销售的重要手段。然而,在管理海外社媒账号的过程中,许多人会面临网络连接的问题。这时,使用一款高效便捷的云手机工具就显得尤为便…...

创业者必读!选择拍卖源码还是自建开发,哪种方案更安全?
在当今数字化时代,拍卖平台作为一种独特的电子商务模式,正逐渐成为人们关注的焦点。随着互联网技术的发展,网络安全问题变得越来越突出。如何保障用户数据安全,防止信息泄露及攻击事件的发生,已经成为拍卖软件开发者面…...
Spring Cloud Gateway整合基于STOMP协议的WebSocket实战及遇到问题解决
本实例介绍了Spring Cloud Gateway整合基于STOMP协议的WebSocket的实现。开发了聊天功能,和用户在线状态。解决了协议gateway整合websocket出现的问题 技术点 Spring Cloud GatewayNacosWebSocketSTOMPWebSocket与STOMP协议详解 1. WebSocket WebSocket 是一种通信协议,提…...

软考高级:系统架构设计师——软件架构设计 Chapter 笔记
软考高级:系统架构设计师——软件架构设计 1 软件架构设计—基本概念架构所处的位置架构发展历程架构的“41”视图例题 架构描述语言(ADL)例题 2软件架构设计—架构风格数据流风格调用/返回 风格独立构件风格虚拟机风格仓库风格(以…...

PageHelper组件 实现前端分页查询功能
Hi~!这里是一颗小谷粒,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~💥💥个人主页:一颗小谷粒💥💥所属专栏:Web前端开发 💥💥博主…...
线性回归与逻辑回归在模型参数优化上的比较
概述 线性回归和逻辑回归是两种基础且广泛应用的预测模型。尽管它们在很多方面有相似之处,如都使用梯度下降算法来优化模型参数,但在优化目标和方法上存在一些关键差异。本文将探讨这两种模型在参数优化上的差异,并提供相应的代码示例。 线…...

JavaWeb JavaScript 10.日程管理 第一期
自我消耗,敏感是我, 明媚是我, 我横跳在不同的情绪中 —— 24.8.31 一、登录页及校验 1.校验账号格式 // 校验账号格式function checkUsername(){// 定义正则表达式表示字符串规则var usernameReg /^[a-zA-Z0-9]{5,10}$/;// 获取用户名输入…...

redis为什么快
春内存访问,相比数据库访问磁盘要快单线程,避免上下文切换带来的cpu开销渐进式Rehash。减少阻塞网络模型多路复用,reactor模型 常用基本数据类型 5个基本数据类型2个高级数据结构(bitmaps、hyperlog) redis高级功能…...
十分钟学会Kubernetes(K8S) 部署SpringBoot3.0
1、十分钟学会Kubernetes(K8S) 部署SpringBoot3.0 本课程以 Java 后端开发的视角,带着大家从零基础入门 k8s 实战,掌握企业级容器化管理平台的各种实战应用,以及 Prometheus 监控告警、ELK 日志收集、DevOps 等众多实战课程内容,大…...

顺序表的插入与删除
一.插入:插入前先移动后面的元素 1.图解: 在b和d之间插入c,此时就需要把d,e,f都向后移一位,腾出一个位置后插入c。 2.代码实现: #include<stdio.h> #define MaxSize 10 //定义最大长度…...
FFMPEG -- 音频开发
1:前言 在进行音频开发之前需要先知道一些基础知识,一些有必要的指导的概念。 1.1 声音的产生、获取和转换 声音的产生的本质是靠震动,声音的传播需要借助媒介,比如空气、液体、固体等媒介。在自然界中声音的可视化为音波的形式&…...
lxml官方入门教程(The lxml.etree Tutorial)翻译
lxml官方入门教程(The lxml.etree Tutorial)翻译 说明: 首次发表日期:2024-09-05官方教程链接: https://lxml.de/tutorial.html使用KIMI和豆包机翻水平有限,如有错误请不吝指出 这是一个关于使用lxml.et…...

string详解
Golang详解string 文章目录 Golang详解stringGolang中为什么string是只读的?stirng和[]byte的转化原理[]byte转string一定需要内存拷贝吗?字符串拼接性能测试 Golang中为什么string是只读的? 在Go语言中,string其实就是一个结构体…...

基于约束大于规范的想法,封装缓存组件
架构?何谓架构?好像并没有一个准确的概念。以前我觉得架构就是搭出一套完美的框架,可以让其他开发人员减少不必要的代码开发量;可以完美地实现高内聚低耦合的准则;可以尽可能地实现用最少的硬件资源,实现最高的程序效率…...

自动化测试面试真题(附答案)
一、编程语法题 1 、 python 有哪些数据类型 python 数据类型有很多,基本数据类型有整型(数字)、字符串、元组、列表、字典和布尔类型等 2 、怎么将两个字典合并 调用字典的 update 方法,合并 2 个字典。 3 、 json.l python …...

云原生架构概念
云原生架构概念 云原生架构(Cloud Native Architechtrue)作为一种现代软件开发的革新力量,正在逐渐改变企业构建、部署和管理应用程序的方式。它的核心优势在于支持微服务架构,使得应用程序能够分解为独立、松耦合的服务…...
85、 探针
一、pod的进阶 pod的进阶: 1.1、pod的生命周期当中的状态: 1、Running运行中,pod已经分配到节点上且pod内的容器正常运行。正常状态(ready 1/1)。 2、complete:完成之后退出,容器内的返回码…...

2024全国大学省数学建模竞赛A题-原创参考论文(部分+第一问代码)
一问题重述 1.1 问题背景 "板凳龙",又称"盘龙",是浙闽地区的传统地方民俗文化活动。这种独特的表演艺术形式融合了中国传统龙舞的精髓和地方特色,展现了人们对美好生活的向往和对传统文化的传承。 在板凳龙表演中&am…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...

循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...

HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...