Java中集合概述(补充ing)

一、集合分类

Java中的集合框架提供了多种类型的集合,主要分为两大类:单列集合(只保存单一类型的对象)和双列集合(保存具有键值对关系的对象)。下面对这些集合进行分类介绍,但由于源码分析会涉及大量的代码和细节,这里只简要概述其关键特性和设计思路。

单列集合(Collection)

1. List接口

  • 有序集合(元素按其插入的顺序进行排序)。
  • 允许有重复的元素。

实现类:

  • ArrayList:基于动态数组实现,查询快,插入慢。
  • LinkedList:基于链表实现,插入快,查询慢。
  • Vector:与ArrayList类似,但线程安全(同步)。

源码分析(以ArrayList为例):

  • ArrayList内部维护了一个Object类型的数组elementData
  • 通过size属性来记录当前元素的数量。
  • 提供了各种方法来操作数组,如add, remove, get等。

2. Set接口

  • 无序集合(不包含重复元素)。
  • 不保证元素的顺序。

实现类:

  • HashSet:基于哈希表实现,插入和查询速度快。
  • TreeSet:基于红黑树实现,元素自然排序或定制排序。
  • LinkedHashSet:维护一个运行于所有条目的双向链表,保持元素的插入顺序。

源码分析(以HashSet为例):

  • HashSet内部维护了一个HashMap实例,实际上元素是放在HashMap的key中。
  • 利用HashMap的key唯一性来保证HashSet中的元素不重复。

双列集合(Map)

Map接口

  • 存储键值对(key-value pair)的映射。
  • 任何一个键最多与一个值相关联。

实现类:

  • HashMap:基于哈希表实现,提供最快的访问速度。
  • TreeMap:基于红黑树实现,可以对键进行排序。
  • LinkedHashMap:维护一个运行于所有条目的双向链表,保持键值对的插入顺序。
  • Hashtable:线程安全的HashMap实现,但性能较低。
  • ConcurrentHashMap:支持高并发访问的HashMap实现。

源码分析(以HashMap为例):

  • HashMap内部维护了一个Node数组table,每个Node是一个键值对。
  • 当插入元素时,通过计算key的哈希值来确定元素在数组中的位置。
  • 如果发生哈希冲突(两个key的哈希值相同),则使用链表或红黑树来处理冲突。

二、单列集合(Collection)

在这里插入图片描述

三、双列集合(Map)

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

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

相关文章

开源相机管理库Aravis例程学习(五)——camera-api

开源相机管理库Aravis例程学习(五)——camera-api 简介例程代码函数说明arv_camera_get_regionarv_camera_get_pixel_format_as_stringarv_camera_get_pixel_formatARV_PIXEL_FORMAT_BIT_PER_PIXEL 简介 本文针对官方例程中的:03-camera-api…

沉浸式翻译 chrome 插件 Immersive Translate - Translate Website PDF

免费翻译网站,翻译PDF和Epub电子书,双语翻译视频字幕 📣 网络上口碑爆炸的网站翻译扩展工具【沉浸式翻译】⭐⭐⭐⭐⭐ 💻 功能特点如下: 📰 网站翻译 🚀 提供双语网站翻译,智能识…

618科技嘉年华!五款极致科技产品,开启智能生活新篇章!

准备好迎接一年一度的618了吗?这不仅仅是一场购物的狂欢,更是一次科技的盛宴,一次智能生活的全新启航。今年,我们将带来五款令人瞩目的极致科技产品,它们将彻底颠覆你对智能生活的认知。从娱乐到工作,这些产…

【Node.js工程师养成计划】之原生node开发web服务器

一、使用node创建http服务器 var http require(http);// 获取到服务器实例对象 var server http.createServer() server.listen(8080, function() {console.log(http://127.0.0.1:8080); })server.on(request, function(req, res){console.log(request);res.write(6666666688…

《微服务设计》读书笔记

此为阅读纽曼《微服务设计》一书后总结的读书笔记,点此处下载PDF文档。 一、微服务的概念 微服务(或称微服务架构)是一种云原生架构方法,其核心思想在于将单个应用拆分为众多 小型、松散耦合的服务,服务之间均通过网…

百度语音识别的springboot应用

1、pom依赖 <dependency> <groupId>com.baidu.aip</groupId> <artifactId>java-sdk</artifactId> <version>4.16.18</version> </dependency> 2、测试的demo 创建语音识别应用 百度智能云-管理中心 (baidu.com) 代码中要…

十大USDT交易平台大全XEX交易所

USDT是一种基于比特币区块链网络的加密代币&#xff0c;主要运用于数字货币交易平台&#xff0c;以稳定币为主。USDT的核心价值在于其与真实货币的固定兑换比率1:1&#xff0c;所以被称为Tether。随着加密货币市场的不断壮大&#xff0c;越来越多的交易平台开始支持USDT&#x…

Android 设置头像 - 裁剪及圆形头像

书接上文 Android 设置头像 - 相册拍照&#xff0c;通过相册和照片的设置就可以获取到需要的头像信息&#xff0c;但是在通常情况下&#xff0c;我们还想要实现针对头像的裁剪功能和圆形头像功能。 先上截图&#xff1a; 图像裁剪 通常裁剪可以分为程序自动裁剪和用户选择裁剪…

上位机图像处理和嵌入式模块部署(树莓派4b设置ftp下载)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 作为一个开发板&#xff0c;最好支持ftp下载&#xff0c;这样文件的上传和下载都会比较方便。虽然目前为止&#xff0c;利用mobaxterm和ssh也能实现…

8.11 分析工具 8.14 设计工具

一、分析工具 &#xff08;一&#xff09;结构化分析 1、数据流图&#xff08;DFD&#xff09; &#xff08;1&#xff09;数据流图 从数据传递、加工的角度&#xff0c;以图形刻画系统内的数据运动情况。全面描述系统逻辑模型的工具。通过符号&#xff0c;表示出数据流动、…

C++中的数据结构与算法

随处可见的红黑树 一般会用到[key,value]。 例如github中这个例子&#xff0c;第一个是访问网站&#xff0c;第二个是访问次数&#xff0c;但是这个不是静态的&#xff0c;这有个动态排序&#xff0c;并且当我们需要让相应的访问次数加1的时候&#xff0c;我们用红黑树查找的时…

VS2022 嘿嘿

还是大二的时候就开始用这个&#xff0c;但居然是为了用PB&#xff0c;-_-|| 用了段时间换成了C#&#xff0c;依稀还记得大佬们纠正我的读法&#xff0c;别读C井&#xff0c;应该读C夏普。。。 安装过程其实也没啥&#xff0c;就是关键Key得花时间找&#xff0c;我好不容易搞…

【论文阅读】互连网络的负载平衡路由算法 (GAL, Globally Adaptive Load-balancing 全局自适应负载平衡)

Globally Adaptive Load-balancing 全局自适应负载平衡 GAL: Globally Adaptive Load-balanced routing 全局自适应负载平衡路由 1. GAL on a ring2. GAL on higher dimensional torus3. 实验性能4. 算法稳定性 Stability总结 References Globally Adaptive Load-balancing 全…

探索数学的奇妙世界:Mathematica之美【上】

文章目录 一、二维函数作图1.二维函数作图命令Plot2.曲线样式3.重画和组合图形4.二维函数绘图 二、三维函数作图1.函数作图命令Plot3D2.三维参数作图 三、等值线图和密度图1.等值线图2.密度图3.图形之间的转换 四、数据绘图1.二维数据绘图2.三维数据绘图 总结 一、二维函数作图…

限流--4种经典限流算法讲解--单机限流和分布式限流的实现

为什么需要限流 系统的维护使用是需要成本的&#xff0c;用户可能使用科技疯狂刷量&#xff0c;消耗系统资源&#xff0c;出现额外的经济开销问题&#xff1a; 控制成本>限制用户的调用次数用户在短时间内疯狂使用&#xff0c;导致服务器资源被占满&#xff0c;其他用户无…

深度学习-线性回归+基础优化算法

目录 线性模型衡量预估质量训练数据参数学习训练损失最小化损失来学习参数显式解 总结基础优化梯度下降选择学习率 小批量随机梯度下降选择批量大小 总结线性回归的从零开始实现实现一个函数读取小批量效果展示这里可视化看一下 线性回归从零开始实现线性回归的简洁实现效果展示…

selenium在Pycharm中结合python的基本使用、交互、无界面访问

下载 下载与浏览器匹配的浏览器驱动文件&#xff0c;这里一定注意的是&#xff0c;要选择和浏览器版本号相同的驱动程序&#xff0c;否则后面会有很多问题。 &#xff08;1&#xff09;浏览器&#xff08;以google为例&#xff09;版本号的查询&#xff1a; 我这里的版本号是1…

大规模数据处理和分析

大规模数据处理和分析&#xff1a;随着大数据技术的发展&#xff0c;处理大规模数据集的能力成为了一种竞争优势。热门问题包括数据清洗、特征工程、分布式计算等。 当我们谈到大规模数据处理和分析时&#xff0c;通常涉及到以下几个方面的内容&#xff1a; 数据清洗&#xff1…

C语言 | Leetcode C语言题解之第55题跳跃游戏

题目&#xff1a; 题解&#xff1a; #define max(a, b) (((a) > (b)) ? (a) : (b))bool canJump(int* nums, int numsSize){int cover 0;int i;// 只可能获取cover范围中的步数&#xff0c;所以i<coverfor(i 0; i < cover; i) {// 更新cover为从i出发能到达的最大…

prime1--vulnhub靶场通关教程

一. 信息收集 1. 探测目标主机IP地址 arp-scan -l //查看网段 vm 编辑--查看虚拟网络编辑器&#xff0c;看到靶机的网段 网段是&#xff1a; 192.168.83.0 是c段网络 2. 全面检测目标IP nmap -sP 192.168.83.1/24 靶机ip是&#xff1a; 192.168.83.145 攻击机的ip是&…
最新文章