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

Java集合——基础

1. 数组和集合的区别数组是固定长度的数据结构一旦创建长度就无法改变而集合是动态长度的数据结构可以根据需要动态增加或减少元素。集合的底层本质是数组数组可以包含基本数据类型和对象而集合只能包含对象。数组只能存储同一数据类型集合可以存储不同数据类型数组可以直接访问元素而集合需要通过迭代器或其他方法访问元素。2. Java中的集合Java集合框架主要包括两种类型的容器一种是集合Collection存储一个元素集合另一种是图Map存储键/值对映射java集合可分为Set、List、Queue和Map四种体系。集合的实质是类Collection是一个接口set、list、queue是其实现类Java集合就像一种容器可以把多个对象实际上是对象的引用但习惯上都称对象“丢进”该容器中。从Java 5 增加了泛型以后Java集合可以记住容器中对象的数据类型使得编码更加简洁、健壮。1ListList是有序输入和输出的顺序一致可重复的Collection使用此接口能够精确的控制每个元素的插入位置用户能根据索引访问List中元素。常用的实现List的类有LinkedListArrayListVectorStack。ArrayList是容量可变的非线程安全列表其底层使用数组实现。当几何扩容时会创建更大的数组并把原数组复制到新数组。ArrayList支持对元素的快速随机访问但插入与删除速度很慢。LinkedList本质是一个双向链表与ArrayList相比其插入和删除速度更快但随机访问速度更慢。2Setset不允许存在重复的元素与List不同set中的元素是无序输入和输出的顺序不一致set内部自动排序改变了输出顺序的。常用的实现有HashSetLinkedHashSet和TreeSetHashSet通过HashMap实现HashMap的Key即HashSet存储的元素所有Key都是用相同的Value一个名为PRESENT的Object类型常量。使用Key保证元素唯一性但不保证有序性。由于HashSet是HashMap实现的因此线程不安全。LinkedHashSet继承自HashSet通过LinkedHashMap实现使用双向链表维护元素插入/顺序。TreeSet通过TreeMap实现的添加元素到集合时按照比较规则将其插入合适的位置保证插入后的集合仍然有序。3MapMap是一个键值对集合存储键、值和之间的映射。Key无序唯一value不要求有序允许重复。Map没有继承于Collection接口从Map集合中检索元素时只要给出键key对象就会返回对应的值对象。主要实现有TreeMap、HashMap、HashTable、LinkedHashMap、ConcurrentHashMapHashMapJDK1.8之前HashMap由数组链表组成的数组是HashMap的主体链表则是主要为了解决哈希冲突而存在的“拉链法”解决冲突JDK1.8以后在解决哈希冲突时有了较大的变化当链表长度大于阀值默认为8且数组长度大于等于64时将链表转化为红黑树以减少搜索时间LinkedHashMapLinkedHashMap继承自HashMap所以它的底层仍然是基于拉链式散列结构即由数组和链表或红黑树组成。另外LinkedHashMap在上面结构的基础上增加了一条双向链表使得上面的结构可以保持键值对的插入顺序。同时通过对链表进行相应的操作实现了访问顺序相关逻辑。HashTable数组链表组成的数组是HashTable的主体链表则是主要为了解决哈希冲突而存在的TreeMap红黑树自平衡的排序二叉树ConcurrentHashMapNode数组链表红黑树实现线程安全的jdk1.8以前Segment锁1.8以后volatile CAS或者synchronized)3. Collection和Collections的区别Collection是Java集合框架中的一个接口它是所有集合类的基础接口。它定义了一组通用的操作和方法如添加、删除、遍历等用于操作和管理一组对象。Collection接口有许多实现类如List、Set和Queue等。Collections注意有一个s是Java提供的一个工具类位于java.util包中。它提供了一系列静态方法用于对集合进行操作和算法。Collections类中的方法包括排序、查找、替换、反转、随机化等等。这些方法可以对实现了Collection接口的集合进行操作如List和Set。4. 集合的遍历有哪些普通for循环可以使用带有索引的普通for循环来遍历 List。ListString list new ArrayList(); list.add(A); list.add(B); list.add(C); ​ for (int i0; i list.size(); i){ String element list.get(i); System.out.println(element); }增强for循环for-each循环用于循环访问数组或集合中的元素。ListStringlistnew ArrayList(); list.add(A); list.add(B); list.add(c); for (String element : list){ System.out.println(element); }Iterator迭代器可以使用迭代器来遍历集合特别适用于需要删除元素的情况。ListString list new ArrayList(); list.add(A); list.add(B); list.add(c); ​ IteratorString iterator list.iterator(); while(iterator.hasNext()){ String element iterator.next(); System.out.println(element); }Listlterator列表迭代器Listlterator是迭代器的子类可以双向访问列表并在迭代过程中修改元素。ListString list new ArrayList(); list.add(A); list.add(B); list.add(c); ​ ListIteratorString listIterator list.listIterator(); while(listIterator.hasNext()){ String element listIterator.next(); System.out.println(element); }使用forEach方法Java8引入了forEach方法可以对集合进行快速遍历。ListString list new ArrayList(); list.add(A); list.add(B); list.add(c); list.forEach(element-System.out.println(element));StreamAPlJava8的StreamAPI提供了丰富的功能可以对集合进行函数式操作如过滤、映射等。ListString list new ArrayList(); list.add(A); list.add(B); list.add(C); ​ list.stream().forEach(element-System.out.println(element));

相关文章:

Java集合——基础

1. 数组和集合的区别数组是固定长度的数据结构,一旦创建长度就无法改变,而集合是动态长度的数据结构,可以根据需要动态增加或减少元素。(集合的底层本质是数组)数组可以包含基本数据类型和对象,而集合只能包…...

推三返一/排队免单/279拼购/三三复制/团队分红/区域代理/股东分红/平级奖/伯乐奖/奖金池电商系统

私域电商裂变创富系统 盘活私域、顶峰相见 私域团队不能是一潭死水 必须通过极大的诱惑力模式促进裂变 让人员活泛起来 让收益涨起来 让盘子做起来 文末有私域电商7大裂变分销模式的详细介绍资料,可以找客服索取: 为私域而生的裂变系统&#xff0…...

打卡信奥刷题(2975)用C++实现信奥题 P6015 [CSGRound3] 游戏

P6015 [CSGRound3] 游戏 题目背景 小 Y 和小 Z 是一对好朋友,他们在玩一个游戏。游戏只有一个回合。 题目描述 有一个牌堆,一共有 nnn 张牌,第 iii 张牌上有一个数 aia_iai​,其中第一张牌是堆顶。 小 Z 先取牌,他可以…...

【统计检验】T检验

统计检验必学:T检验|三种类型公式推导Python代码机器学习实战 T检验是统计学、数据分析、机器学习中最常用、最基础的均值检验方法,专门用来判断两组数据的均值是否存在显著差异。一、T检验到底是什么?(一句话看懂&…...

python微信小程序的基于Android的医院健康咨询平台 患者健康数据评估系统

目录实现计划概述系统架构设计后端开发(Python)微信小程序开发Android平台集成健康评估算法数据安全与合规测试与部署维护与更新项目技术支持可定制开发之功能创新亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作…...

动力域-BMS电池管理系统半实物仿真测试

分布式架构、高实时仿真的BMS半实物仿真测试系统...

【异常】OpenClaw 启动异常:插件路径丢失plugin: plugin path not found与未知渠道unknown channel id: feishu报错排查指南

在部署或升级 OpenClaw 网关时,由于本地依赖缺失或配置文件未同步更新,经常会遇到插件无法加载的异常。本文将针对典型的“飞书插件丢失”及“记忆组件缺失”报错提供完整的排查与解决思路。 一、报错内容 在启动 OpenClaw 时,控制台或日志输出如下 JSON 格式的异常提示: …...

TikTok引发算法竞赛,Meta与TikTok陷有害内容争议

算法竞赛下,Meta与TikTok有害内容增多举报人向BBC透露,TikTok凭借极具吸引力的短视频推荐算法颠覆社交媒体行业后,引发了算法竞赛。Meta和TikTok在对自家算法进行内部研究后发现,愤怒情绪能推动用户参与度,于是做出了一…...

【2026官方最新】贵州工商职业大学几点熄灯?早操晚自习全解

大学的日常作息直接关系到未来三年的生活幸福感。很多新生在填报志愿前都会好奇:学校管得严不严?作息时间是怎么安排的?为了解答大家的疑惑,本文根据2026年贵州工商职业学院官方最新发布的日常管理与作息制度,为您进行…...

Unity像素游戏精灵导入最佳实践

本文针对 Unity 2D 像素风格游戏,总结了一套从纹理导入到平台优化的完整工作流,帮你解决像素模糊、边缘黑边、碰撞不准、包体过大等常见问题,让你的像素资源在游戏中呈现最佳效果。一、前言在开发像素风格2D游戏时,纹理导入设置直…...

3年总结-构建企业或个人知识库踩的10大致命坑文章内容

说白了,很多人搞企业AI落地,以为花几十万买个大模型或者搞个牛逼的提示词,业务就能直接起飞。如果你有这个想法,那我劝你赶紧刹车,不然钱砸进去连个水花都听不见。AI就像你花重金招来的一个名校博士生,智商…...

三层电梯S7 - 1200 PLC与TP700触摸屏博途V15联机程序开发之旅

3三层电梯西门子S7-1200PLC和TP700触摸屏博途V15联机程序666,带自动升降功能,设计要求,开门等待5S最近搞了个三层电梯的项目,用的是西门子S7 - 1200 PLC搭配TP700触摸屏,在博途V15环境下开发程序,还带自动升…...

字符串对比-进阶题11

字符串对比 题目 问题描述给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4种情况之一:1:两个字符串长度不等。比如 Beijing 和 Hebei2:两个字符串不仅长度相等,而且相应位置上的…...

OpenClaw 3.13 正式发布:新增 Chrome DevTools MCP、会话绑定、插件生态全面升级

OpenClaw 是一款强大的 AI 助手框架,支持多平台接入、浏览器自动化、代码执行等功能。近日,OpenClaw 3.13 版本正式发布,带来了多项重要更新。 🚀 重要新特性 1. Chrome DevTools MCP 支持 新增官方 Chrome DevTools MCP 附加模…...

MCGS配方功能学习

MCGS配方使用与一般触摸屏(例如西门子触摸屏)等不太一样,今天通过MCGS系统帮助手册,利用里面的脚本介绍,组态了MCGS配方的使用方法,通过脚本实现,确实比较灵活。...

管理者不做什么比做什么更重要

1. 不做管理上的极端派 “严格”与“宽容”之间找到平衡点:对事要严,对人要宽。 既要有原则、有底线,对错误坚决纠正,对工作严格要求;也要有人情味、有温度,体谅下属的难处,关心下属的成长 2.…...

探索基于龙贝格观测器的 PMSM 无传感器控制

该模型采用龙贝格观测器进行无传感器控制 其利用 PMSM 数学模型构造观测器模型,根据输出的偏差反馈信号来修正状态变量。 当观测的电流实现与实际电流跟随时, 可以从观测的反电势计算得到电机的转子位置信息,形成跟踪闭环估计。 龙伯格观测器…...

Nginx 的性能调优与深度监控

一、Nginx 性能调优(核心优化方向)通过优化配置充分利用硬件资源,减少资源浪费,提升并发处理能力和响应速度,涵盖基础配置、连接管理、缓存与压缩等关键维度。1. 基础环境与进程优化运行用户与组配置:避免使…...

2026年光伏构网核心服务商全景解析:五大技术路线如何重塑新型电力系统

在全球能源转型迈向纵深的关键节点,以风电、光伏为代表的新能源正加速从“补充能源”向“主力电源”跃迁。然而,高比例、强波动的新能源大规模并网,对传统电力系统的频率稳定、电压支撑与惯量响应能力构成前所未有的挑战。在此背景下&#xf…...

2026年3月18日人工智能早间新闻

各位读者,早上好。今天是2026年3月18日,星期三。欢迎收看人工智能早间新闻。昨日,从英伟达GTC大会到国内产业一线,人工智能领域释放出密集信号——算力竞赛正从地面延伸至太空,智能体加速从概念走向实干,而…...

【深度思考】用了 Cursor 之后,为什么我反而更焦虑了?——AI 时代的程序员生存法则

摘要:最近深度使用了 Cursor 等 AI 编程助手,效率提升的同时,却产生了一种“知识空心化”的危机感。本文记录了从“依赖 AI”到“重新审视基础”的心路历程,探讨了在 AI 辅助编程时代,程序员的核心竞争力究竟发生了什么…...

【晶振行业的未来演进蓝图】

在电子信息产业的精密运转体系中,晶振是当之无愧的“时间基准核心”,其性能直接决定着设备的同步精度与运行稳定性。随着5G向6G演进、AI算力爆发、智能驾驶普及等科技浪潮的推动,晶振行业正迎来技术突破与市场扩容的双重机遇,呈现…...

C++实现DNA互补链转换:从错误到正确的代码演变

引言在生物信息学中,DNA由四种碱基组成:腺嘌呤(A)、胸腺嘧啶(T)、鸟嘌呤(G)和胞嘧啶(C)。根据碱基互补配对原则,A与T配对,G与C配对。给…...

实战爬虫对抗 · 第 2 篇:请求层对抗——用好 requests 打穿 80% 简单反爬

一、前情回顾:先把“长相”整对,再谈对抗在第 1 篇里,我们画了一张反爬全景图。请求层是最外圈的一道“身份证检查”:浏览器发的是一整套 Header Cookie 正常流程新手脚本只发一个裸 requests.get(url)很多时候,你压…...

《鸽姆智库商业计划书》GG3M Think Tank Business Plan

🕊️《鸽姆智库商业计划书》🕊️ GG3M Think Tank Business Plan(中英对照 国际标准版)📌 1. 执行摘要中文鸽姆智库是一家基于人工智能与知识工程的创新型智库平台,致力于为企业、政府机构与个人提供智能化…...

油茶果成熟度检测数据集VOC+YOLO格式264张2类别

注意数据集中图片110张是原图剩余为增强生成图片,主要采取旋转增强算法生成数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数):264标…...

315健康首选:告别锰超标,京尚纯陶瓷更放心

315重磅曝光:食品级不锈钢餐具乱象丛生,近7成锰含量超标。过量锰直接损伤神经系统,导致记忆力下降,尤其影响儿童大脑与身体发育,长期接触提升致癌风险。锅具天天接触高温食物,材质不过关,等于长…...

openclaw 使用亚马逊amazon-bedrock模型的配置方法

OPENCLAW默认不支持选择AWS上的amazon-bedrock模型,因此,要想用AWS上的模型,只能自行修改它的配置了。 1、增加亚马逊的令牌环境变量 在~/.openclaw/下创建一个.env环境变量文件 输入如下内容:注意键名区分大小写 AWS_ACCESS_KEY_…...

求大佬指导zynq Pl的quad spi 标准模式作为从机的配置

配置之后不知道什么原因,一直收到错误的数据。我的目的是使用zynq作为spi从机,接收2.6M左右的不定长数据,速率要求能达到30M...

2026 Temu卖家必看:终于被我研制出“核出高价”的方法!利润涨了,还不伤链接✨

引⾔📝做Temu的你是不是这样:每天提心吊胆等核价,一出价就心惊肉跳;平台一让降价就陷入两难——降了没利润,不降没流量;手动盯着改价累到emo🙍🏻,一不小心还亏本&#xf…...