当前位置: 首页 > news >正文

双非硕转测试之Java学习笔记(一):集合

Java学习-----集合

  • 简单概括
  • 单列集合--collection
    • list接口:
    • vector类:
    • LinkedList类:
    • set接口:
    • HasSet类:
    • LinkedHashSet类:
  • 双列集合--Map
    • Map接口:
    • HashMap类:
    • HashTable类:
    • Properties类:

简单概括

  1. 集合的定义:集合是一个容器,可以容纳多个对象,并且可以动态的增加。
  2. 集合的目的:解决数组无法动态增加的缺点,并且提供多种方法进行crud等等。
  3. 集合的分类:单列集合–collection,和双列集合map。

collection集合包含的子类和接口

单列集合–collection

collection接口进行遍历的方法:

1.通过迭代器 Iterator,原理如下图

在这里插入图片描述

2.增强for循环,原理如下图

在这里插入图片描述

list接口:

定义:是collection接口的子接口,这就意味着list可以继承collection的方法。
常用方法:add、addAll、get、indexOf、remove、set、subList等等。
子类:ArrayList、vector、LinkedList。
ArrayList类:
1.这里需要注意其扩容机制,如下图所示:
在这里插入图片描述 2.线程不安全,所以效率高。

vector类:

1.底层 是一个对象数组。
2.线程同步的,也就是线程安全,但是效率没有ArrayList高。
3.ArrayList和vector的比较,如下图:
在这里插入图片描述

LinkedList类:

1.底层实现了双向链表和双端队列的特点。
2.线程不安全,没有实现同步。
3.ArrayList和LinkedList的对比,实际上可以看做链表和数组的区别,如下图:
在这里插入图片描述

set接口:

定义:是collection接口的子接口,无序,不允许重复元素。
常用方法:和collection接口一样。
子类:HashSet、TreeSet。

HasSet类:

1.底层实际是HashMap,而HashMap的底层是数组+链表+红黑树实现的。
2.之所以是无序的,是因为元素存放的位置是基于哈希值计算得到的,因此无法确定索引的结果。
3.原理如下图所示
在这里插入图片描述
4.关于HashSet的扩容机制,如下图所示:
在这里插入图片描述

LinkedHashSet类:

1.是HashSet的子类,意味继承lHashSet的方法。
2.LinkedHashSet的底层是LinkedHashMap,底层是通过数组和双向链表实现的。
3.因为链表的存在,LinkedHashSet可以确保遍历的顺序和插入顺序一致。

双列集合–Map

map集合包含的z子类

Map接口:

1.Map与Collection是并列的关系,不存在继承关系
2.Map中的元素是以键值对的方式保存的,不可以重复。
3.Map中的键值对的关系是一对一的,通过key值就能获得value值。
4.Map接口的遍历方法有多种,也比较复杂,这里只介绍一种,通过KeySrt的方式获取所有的键:Set keySet = map.Set();再通过key值取得对应的value值。
5.常用方法:put、get、remove、size、isEmpty、clear等等。
5.子类:HashMap、HashTable、Properties。

HashMap类:

1.方法实现Map接口的方法。
2.关于扩容机制:

  1. 先判断table是否为null,为空则为数组扩容(16)。
  2. 通过hash得到一个索引位置,如果为空则直接挂上去。
  3. 修改次数++。
  4. 计算table目前存放元素的个数,并且和临界值判断,如果大于则要扩容。
  5. 当索引位置冲突时,就判断如果哈希值和(key值或者value值)相等,就直接替换了。
  6. 如果哈希值和key值或者value值有一个不相等,就判断是否是红黑树,如果是则按红黑树的规则添加。
  7. 如果是链表,加入的元素则要挨个与链表中的元素判断,不相等则还要判断是否需要树化,不需要就直接加在后面,元素相等的话就直接break,放弃插入。

HashTable类:

1.方法基本和HashMap一致,都实现了Map接口的方法。
2.是线程安全的,而HashMap是线程不安全的。
3.不允许存在null键值。

Properties类:

1.使用特点和HashTable类似。
2.通常用作配置文件。

相关文章:

双非硕转测试之Java学习笔记(一):集合

Java学习-----集合 简单概括单列集合--collectionlist接口:vector类:LinkedList类:set接口:HasSet类:LinkedHashSet类: 双列集合--MapMap接口:HashMap类:HashTable类:Pro…...

zabbix源码安装

目录 一.安装php和nginx客户端环境 二.修改php配置 三.修改nginx配置文件 四.下载并编译zabbix 五.创建zabbix需要的用户及组 六.安装编译需要的依赖 七.配置zabbix文件 八.数据库配置 九.配置zabbix 十.web界面部署 十一.遇到无法创建配置文件 十二.登录zabbix 前…...

计算机视觉之三维重建(5)---双目立体视觉

文章目录 一、平行视图1.1 示意图1.2 平行视图的基础矩阵1.3 平行视图的极几何1.4 平行视图的三角测量 二、图像校正三、对应点问题3.1 相关匹配法3.2 归一化相关匹配法3.3 窗口问题3.4 相关法存在的问题3.5 约束问题 一、平行视图 1.1 示意图 如下图即是一个平行视图。特点&a…...

计算机网络-TCP/IP 网络模型

TCP/IP网络模型各层的详细描述: 应用层:应用层为应用程序提供数据传输的服务,负责各种不同应用之间的协议。主要协议包括: HTTP:超文本传输协议,用于从web服务器传输超文本到本地浏览器的传送协议。FTP&…...

算法训练营第29天|LeetCode 491.递增子序列 46.全排列 47.全排列Ⅱ

LeetCode 491.递增子序列 题目链接&#xff1a; LeetCode 491.递增子序列 解题思路&#xff1a; 用哈希集合进行去重&#xff0c;同一树层不能取重复元素。 代码&#xff1a; class Solution { public:vector<vector<int>>result;vector<int>path;void…...

Ubuntu服务器搭建 - 环境篇

Ubuntu服务器搭建 - 环境篇 基于腾讯云服务器 - Ubuntu 20.04 LTS 一、安装 - MySQL 1.1 概述 MySQL安装方式有三种: 1. 使用Ubuntu 包管理工具 apt安装 2. 使用MySQL官方APT存储库安装 3. 使用MySQL官方二进制发行版安装 1.2 安装 MySQL 使用MySQL官方APT存储库安装 $ wget…...

深度学习基础模型之Mamba

Mamba模型简介 问题&#xff1a;许多亚二次时间架构(运行时间复杂度低于O(n^2)&#xff0c;但高于O(n)的情况)&#xff08;例如线性注意力、门控卷积和循环模型以及结构化状态空间模型&#xff08;SSM&#xff09;&#xff09;已被开发出来&#xff0c;以解决 Transformer 在长…...

Topaz Video AI for Mac v5.0.0激活版 视频画质增强软件

Topaz Video AI for Mac是一款功能强大的视频处理软件&#xff0c;专为Mac用户设计&#xff0c;旨在通过人工智能技术为视频编辑和增强提供卓越的功能。这款软件利用先进的算法和深度学习技术&#xff0c;能够自动识别和分析视频中的各个元素&#xff0c;并进行智能修复和增强&…...

解决WordPress文章的段落首行自动空两格的问题

写文章时&#xff0c;段落首行都会空两格&#xff0c;可是WordPress自带的编辑器却没有考虑到这一点&#xff0c;导致发布的文章首行都是顶格的&#xff0c;看起来很不习惯。 我们通常的解决方法都是在发布文章时把编辑器切换到“文本”模式&#xff0c;然后再在首行手动键入两…...

RISC-V单板计算机模拟和FPGA板多核IP实现

&#x1f3af;要点 &#x1f3af;使用单板计算机 Visionfive 2 或模拟器测试RISC-V汇编&#x1f3af;RISC-V汇编加载和算术。&#x1f3af;使用GNU MAKE汇编RISC-V指令&#xff0c;ESP32使用CMake编译执行指令。&#x1f3af;RISC-V汇编功能和使用释义&#xff1a;控制指令&am…...

Mojo编程语言案例及介绍

Mojo是一种新兴的编程语言&#xff0c;它结合了现代编程范式与简洁易读的语法&#xff0c;为开发者提供了一个强大且高效的开发工具。以下将详细介绍Mojo编程语言的特性&#xff0c;并通过一个实际案例来展示Mojo的应用。 一、Mojo编程语言介绍 Mojo编程语言的设计理念是“简单…...

【Python面试题收录】Python中有哪些方法交换两个变量的值?至少给出三种方法。

一、使用临时变量 # 定义原始变量 a 10 b 20# 直接交换&#xff0c;Python会一次性执行两个赋值操作 a, b b, a# 无需额外变量&#xff0c;a 和 b 的值已经交换 print(a) # 输出: 20 print(b) # 输出: 10 二、利用元组解包特性&#xff08;不使用临时变量&#xff0c;推荐…...

MySQL核心命令详解与实战,一文掌握MySQL使用

文章目录 文章简介演示库表创建数据库表选择数据库删除数据库创建表删除表向表中插入数据更新数据删除数据查询数据WHERE 操作符聚合函数LIKE 子句分组 GROUP BY HAVINGORDER BY(排序) 语句LIMIT 操作符 分页查询多表查询-联合查询 UNION 操作符多表查询-连接的使用-JOIN语句编…...

基于Springboot + MySQL + Vue 大学新生宿舍管理系统 (含源码)

目录 &#x1f4da; 前言 &#x1f4d1;摘要 &#x1f4d1;操作流程 &#x1f4da; 系统架构设计 &#x1f4da; 数据库设计 &#x1f4ac; 管理员信息属性 &#x1f4ac; 学生信息实体属性 &#x1f4ac; 宿舍安排信息实体属性 &#x1f4ac; 卫生检查信息实体属性 &…...

vulnhub pWnOS v2.0通关

知识点总结&#xff1a; 1.通过模块来寻找漏洞 2.msf查找漏洞 3.通过网站源代码&#xff0c;查看模块信息 环境准备 攻击机&#xff1a;kali2023 靶机&#xff1a;pWnOS v2.0 安装地址&#xff1a;pWnOS: 2.0 (Pre-Release) ~ VulnHub 在安装网址中看到&#xff0c;该靶…...

leetcode热题100.数据流的中位数

作者&#xff1a;晓宜 &#x1f308;&#x1f308;&#x1f308; 个人简介&#xff1a;互联网大厂Java准入职&#xff0c;阿里云专家博主&#xff0c;csdn后端优质创作者&#xff0c;算法爱好者 ❤️❤️❤️ 你的关注是我前进的动力&#x1f60a; Problem: 295. 数据流的中位数…...

C 从函数返回指针

我们已经了解了 C 语言中如何从函数返回数组&#xff0c;类似地&#xff0c;C 允许您从函数返回指针。为了做到这点&#xff0c;您必须声明一个返回指针的函数&#xff0c;如下所示&#xff1a; int * myFunction() { . . . }另外&#xff0c;C 语言不支持在调用函数时返回局部…...

(文章复现)考虑分布式电源不确定性的配电网鲁棒动态重构

参考文献&#xff1a; [1]徐俊俊,吴在军,周力,等.考虑分布式电源不确定性的配电网鲁棒动态重构[J].中国电机工程学报,2018,38(16):4715-47254976. 1.摘要 间歇性分布式电源并网使得配电网网络重构过程需要考虑更多的不确定因素。在利用仿射数对分布式电源出力的不确定性进行合…...

蓝桥杯第八届c++大学B组详解

目录 1.购物单 2.等差素数列 3.承压计算 4.方格分割 5.日期问题 6.包子凑数 7.全球变暖 8.k倍区间 1.购物单 题目解析&#xff1a;就是将折扣字符串转化为数字&#xff0c;进行相加求和。 #include<iostream> #include<string> #include<cmath> usin…...

小于n的最大数 Leetcode 902 Numbers At Most N Given Digit Set

这两个问题的本质就是一个棵树&#xff0c;然后根据n对树做剪枝。难点在于剪的时候边界条件有些坑&#xff0c;get_lower_largest_digit_dic是这两个题目的共同点 题目一&#xff1a; 小于n的最大数 算法题目&#xff1a;小于n的最大数 问题描述&#xff1a;给一个数组nums[5…...

Leetcode刷题-数组(二分法、双指针法、窗口滑动)

数组 1、二分法 704. 二分查找 - 力扣&#xff08;LeetCode&#xff09; 需要注意区间的问题。首先在最外面的循环判断条件是left<right。那就说明我们区间规定的范围就是【left,right】 属于是左闭右闭&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&…...

STM32学习和实践笔记(4): 分析和理解GPIO_InitTypeDef GPIO_InitStructure (b)

继续上篇博文&#xff1a;STM32学习和实践笔记&#xff08;4&#xff09;: 分析和理解GPIO_InitTypeDef GPIO_InitStructure (a)-CSDN博客 往下写&#xff0c; 为什么&#xff1a;当GPIO_InitStructure.GPIO_PinGPIO_Pin_0 ; 时&#xff0c;其实就是将对应的该引脚的寄存器地…...

数据仓库——事实表

数据仓库基础笔记思维导图已经整理完毕&#xff0c;完整连接为&#xff1a; 数据仓库基础知识笔记思维导图 事实表 事务事实表 事务事实表用于跟踪事件&#xff0c;通过存储事实和与之关联的维度细节&#xff0c;允许单独或聚集地研究行为。粒度稀疏性包含可加事实 无事实的…...

人工智能常用的编程语言有哪些?

人工智能常用的编程语言包括Python、Java、C、R、Lisp和Prolog等。具体选择取决于项目需求、技术背景和性能要求。 Python是AI领域的明星语言&#xff0c;由于其简洁易懂的语法、丰富的库支持以及庞大的社区资源&#xff0c;适用于机器学习、深度学习和自然语言处理等领域。 …...

【Leetcode每日一题】模拟 - 提莫攻击(难度⭐)(45)

1. 题目解析 题目链接&#xff1a;495. 提莫攻击 2.算法原理 一、分情况讨论 要计算中毒的总时长&#xff0c;我们需要考虑时间点之间的差值&#xff0c;并根据这些差值来确定中毒的实际持续时间。 情况一&#xff1a;差值大于等于中毒时间 假设你的角色在时间点A中毒&#…...

OPPO云VPC网络实践

1 OPPO 云网络现状 随着OPPO业务的快速发展&#xff0c;OPPO云规模增长迅速。大规模虚拟实例的弹性伸缩、低延时需求对网络提出了诸多挑战。原有基于VLAN搭建的私有网络无法解决这些问题&#xff0c;给网络运维和业务的快速上线带来了挑战。 梳理存在的主要问题如下&#xf…...

力扣(数组)找到所有数组中消失的数字

给你一个含 n 个整数的数组 nums &#xff0c;其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字&#xff0c;并以数组的形式返回结果。 示例 1&#xff1a; 输入&#xff1a;nums [4,3,2,7,8,2,3,1] 输出&#xff1a;[5,6]示例 2&am…...

每日面经分享(Spring Boot: part3 Service层)

SpringBoot Service层的作用 a. 封装业务逻辑&#xff1a;Service层负责封装应用程序的业务逻辑。Service层是控制器&#xff08;Controller&#xff09;和数据访问对象&#xff08;DAO&#xff09;之间的中间层&#xff0c;负责处理业务规则和业务流程。通过将业务逻辑封装在S…...

k8s的pod访问service的方式

背景 在k8s中容器访问某个service服务时有两种方式&#xff0c;一种是把每个要访问的service的ip注入到客户端pod的环境变量中&#xff0c;另一种是客户端pod先通过DNS服务器查找对应service的ip地址&#xff0c;然后在通过这个service ip地址访问对应的service服务 pod客户端…...

shell脚本发布docker-nginx vue2 项目示例

docker、git、node.js安装略过。 使git pull或者git push不需要输入密码操作方法 nginx安装在docker容器里面&#xff0c;参见&#xff1a;https://blog.csdn.net/HSJ0170/article/details/128631155 姊妹篇&#xff08;宿主机nginx&#xff0c;非docker-nginx&#xff09;&am…...

大连精美网站制作/百度代发排名

北京时间 2019 年 10 月 9 日&#xff0c;微软发布了全新的 VS Code Python 插件&#xff0c;带来了众多更新&#xff01;其中&#xff0c;最大的更新就要属万众期待的 Jupyter Notebook 原生支持了&#xff01;我们来看看这次 Jupyter Notebook 的原生支持带来了哪些好用的功能…...

b2b网站推广技巧/深圳百度快速排名提升

备注&#xff1a;查询时按ctrlf&#xff0c;方便快速查找。小型汽车(蓝牌)川A77HE2 川A9Z05P 川AH39B7 川AJ20N2 川AU7X72 川AV228N川HF3109 川JU9108 川YN4946 鄂A07ZY2 鄂A16KL8 鄂A23B47鄂A23BA7 鄂A6Q120 鄂A71NS2 鄂A71NW9 鄂A83P99 鄂AC1J17鄂AHP189 鄂AR65M1 鄂AV3A97 鄂…...

网站开发无锡/西安百度

栈 栈本身也是一种线性表&#xff0c;只是它只允许在一端进行插入和删除&#xff0c;栈结构的元素满足先进后出&#xff08;LIFO&#xff09;的特征。线性表本身分为顺序表和链表&#xff0c;所以栈也分为顺序栈和链栈。 1.顺序栈 顺序表声明的时候需要指明顺序表的最大容量…...

网站后台功能需求/目前在哪个平台做推广好

科学研究的目的是通过观察、实验和思考来更好地理解我们周围的世界&#xff0c;从而改进我们的生活和社会。科学研究可以帮助我们解决许多关键问题&#xff0c;比如改善医疗和公共卫生、保护环境、提高农业生产率、发明新技术和产品等。 基础研究是科学研究的一种&#xff0c;它…...

移动论坛网站模板/百度广告电话号码是多少

引言LabVIEW是一种简单易学、形象直观的图形化编程语言&#xff0c;也称为G语言&#xff0c;具有丰富的同传统仪器外观类似的控件库(如旋钮、仪表盘、温度计、波形图表等)&#xff0c;可以构建漂亮专业的用户界面&#xff0c;同时&#xff0c;内部提供了庞大的函数库(如数据采集…...

网站栏目做树形结构图/重庆seowhy整站优化

Docker的C/S模式&#xff1a; 用户通过Docker的CLI客户端向Docker守护进程发送指令&#xff0c;然后Docker守护进程将执行结果通过Docker的CLI客户端显示给用户。 Docker也提供了与守护进程通信的API&#xff0c;叫做RemoteAPI。RemoteAPI在复杂的情况下支持使用STDIN/STDOUT/S…...