最新要闻
- 周二银行间回购定盘利率涨跌互现(05-30)
- 荣耀90系列发布:两款机型详解-世界快报
- 玩家在《塞尔达传说:王国之泪》造出二极管!信息时代要来了 环球播资讯
- 商州一出村道路泥泞出行难,主管部门:将用卵石铺设
- 《小美人鱼》真人电影首映三天票房为9540万美元 低于业界预期
- 微软推出《扫雷》与《纸牌》系列游戏周边商品 为广大电脑玩家熟悉
- 米哈游举办首届“星辰嘉年华 小王子杯”海外赛事 总奖金高达27万美元
- 因存在极大的安全隐患 多地管理部门开始立法禁止“低头族”过马路玩手机
- 梅西加冕五大联赛历史射手王 个人冠军数量追平阿尔维斯
- 贵州省发展改革委到铜仁市调研峰谷分时电价政策
- 扎克伯格净资产达到923亿美元 Meta将削减优先级较低的项目
- 当前观点:茅台冰淇淋一年卖出近千万杯:将研发酒心巧克力、棒支
- 群联发布新主控E31T:PCIe 5.0 SSD终于要便宜了!
- 疑台风刮来遍地生蚝 广东居民捡200斤:画面震撼 网友羡慕_每日速递
- 首发7折 联想65W氮化镓插排明天开售:出差不用带电源了
- 全球唯一一只纯白色的大熊猫惊艳亮相 被网友戏称为“卸了妆”的国宝
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
Java 集合类详解(一)_全球焦点
为什么要使用集合
存储多个数据可以使用数组,但由于数组在内存中是连续存储的,所以会有一些限制。比如数组在创建时就要指定长度,即可以容纳的元素个数,且指定后无法更改;数组在创建时需要指定元素的类型,并且所有元素都必须是该类型或其子类;添加或删除数组中的元素需要创建一个新数组再进行元素复制,比较麻烦。下面是 Person 数组扩容的示意代码。
// 给 people1 数组末尾添加一个元素public class PersonArray { public static void main(String[] args) { Person[] people1 = new Person[1]; people1[0] = new Person(); // 创建新数组 Person[] people2 = new Person[people1.length + 1]; // 复制 people1 数组的元素到 people2 for (int i = 0; i < people1.length; i++) { people2[i] = people1[i]; } // 添加新元素 people2[people2.length - 1] = new Person(); }}
数组可以通过索引快速访问和操作元素,在许多场景下仍然是非常有用的,但如果需要动态调整大小或保存不同类型的元素,则可以考虑使用集合类来代替数组。集合类还提供了一系列增加、删除、修改和查找元素的方法。集合框架中还提供了多种优化和封装好的实现类,通过使用合适的集合类可以更高效地组织和操作数据。
(资料图片仅供参考)
集合框架体系
Java 的集合类很多,主要有Collection
和Map
两个接口,层次关系如下图。
Collection
接口有List
和Set
这两个重要的子接口,它们的实现子类都是单列集合。其中List
接口表示有序的、可以包含重复元素的集合,常见的实现类有ArrayList
、LinkedList
和Vector
。Set
接口表示无序的且不包含重复元素的集合,常见的实现类有HashSet
、TreeSet
和LinkedHashSet
。
Map
接口实现子类是双列集合,表示一组键值对的映射,其中每个键都是唯一的。常见的实现类有HashMap
、Hashtable
和Properties
。
public class AddElements() { public static void main(String[] args) { ArrayList
Collection 接口和常用方法
Collection 接口实现类的特点
Collection
实现类(通常通过其中一个子接口间接实现Collection)可以存放多个 Object 类型的元素。有些Collection
接口的实现类可以存放重复的元素,有些则不可以。有些Collection
接口的实现类是有序的(List
),有些是无序的(Set
)。Collection
接口没有直接实现类,提供了更具体的子接口(如Set
和List
)的实现。
所有通用的Collection实现类都会提供两个"标准"构造方法:一个无参构造方法,来创建一个空的集合,以及一个带有单个Collection类型参数的构造方法,创建一个与参数集合具有相同元素的新集合。实际上,后一种构造方法可以复制任何集合,生成一个与参数集合元素相同的所需类型的集合。
public class CollectionMethod() { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add(1); list.add(2); list.add(3); System.out.println(list);// [1, 2, 3] Vector
Collection 接口常用方法
下面的代码以其间接实现类ArrayList
演示Collection
接口的常用方法。
public class CollectionMethod() { public static void main(String[] args) { Collection collection = new ArrayList<>(); // boolean add(E e) // 给集合中添加指定的元素,添加成功则返回 true。 // 如果此集合不允许重复元素并且已经包含了指定的元素,则返回 false。 // 支持此操作的实现类可能会对添加到该集合中的元素进行限制。 // 如果一个集合拒绝添加某个特定元素的原因不是因为集合已经包含该元素, // 会抛出一个异常(而不是返回 false)。 collection.add("hello"); collection.add(10); collection.add(true); // 下面一条语句执行后输出:collection = [hello, 10, true] System.out.println("collection = " + collection); // boolean remove(Object o) // 从集合中移除指定元素的一个实例。如果集合包含多个满足 // (o==null ? e==null : o.equals(e))条件的元素 e, // 则移除第一个元素 e。移除完成后返回 true。 collection.remove("hello"); // 下面一条语句执行后输出:collection = [10, true]System.out.println("collection = " + collection); // boolean contains(Object o) // 如果此集合包含指定元素,则返回 true。更准确地说,当且仅当此集合包含至少 // 一个满足(o==null ? e==null : o.equals(e))条件的元素 e 时,返回 true。 System.out.println(collection.contains(10));// true // int size() // 返回此集合中的元素数量。 System.out.println(collection.size());// 2 // boolean isEmpty() // 判断集合是否为空。 System.out.println(collection.isEmpty());// false // void clear() // 清空集合中的元素。 collection.clear(); // 下面一条语句执行后输出:collection = [] System.out.println("collection = " + collection); // boolean addAll(Collection extends E> c) // 将指定集合中的所有元素添加到此集合中。 Collection collection1 = new ArrayList(); collection1.add("Mary"); collection1.add("Luck"); collection.addAll(collection1); // 下面一条语句执行后输出:collection = [Mary, Luck] System.out.println("collection = " + collection); // boolean containsAll(Collection> c) // 判断此集合是否包含指定集合中的所有元素 System.out.println(collection.containsAll(collection1));// true // boolean removeAll(Collection> c) // 从此集合中移除与指定集合中相同的所有元素。 // 在此调用返回后,此集合将不包含与指定集合共有的任何元素。 collection.add("King"); collection.removeAll(collection1); // 下面一条语句执行后输出:collection = [King] System.out.println("collection = " + collection); }}
Collection 接口如何遍历元素
使用 Iterator(迭代器)
Iterator
接口是集合的迭代器,主要用于遍历Collection
集合中的元素。所有实现了Collection
接口的实现类,都有一个iterator()
方法,用以返回一个实现了Iterator
接口的对象,即可以返回一个迭代器。
Iterator
接口的方法:
// 判断是否还有下一个元素boolean hasNext() // 返回集合中的下一个元素E next()// 从底层集合中移除此迭代器返回的最后一个元素。每次调用 next() 只能调用此方法一次。// 如果在调用此方法之前尚未调用过 next() 方法,或者在最后一次调用 next() 方法之后// 已经调用了过一次 remove() 方法,则抛出 IllegalStateException 异常。default void remove() // 对剩余的每个元素执行给定的操作,直到所有元素被处理完或操作抛出异常为止。default void forEachRemaining(Consumer super E> action)
迭代器的使用示例代码:
public class CollectionIterateor() { public static void main(String[] args) { Collection col = new ArrayList(); col.add("红楼梦"); col.add("西游记"); col.add("三国演义"); col.add("水浒传"); // 遍历 col 集合 // 先获得 col 对应的迭代器 Iterator iterator = col.iterator(); // 使用 while 循环遍历 while (iterator.hasNext()) {// 判断是否还有元素 Object obj = iterator.next(); // 返回下一个元素,类型是 Object System.out.println("obj = " + obj); } // 当退出 while 循环后,iterator 迭代器指向最后一个元素 // 此时再调用 next() 会抛出 NoSuchElementException 异常 // iterator.next(); // 如果需要再次遍历,需要重制迭代器 System.out.println("===第二次遍历==="); iterator = col.iterator(); while (iterator.hasNext()) { Object obj = iterator.next(); System.out.println("obj = " + obj); } }}
由于当迭代器中不存在下一个元素时,直接调用 iterator.next() 方法会抛出 NoSuchElementException 异常,所以调用 iterator.next() 方法之前需要调用 iterator.hasNext() 方法。
增强 for 循环
增强 for 循环是简化版的 iterator,本质一样,只能用来遍历集合或数组。基本语法如下:
for(元素类型 元素名 : 集合名或数组名){访问元素;}
public class EnhancedFor() { public static void main(String[] args) { Collection collection = new ArrayList(); collection.add("mary"); collection.add(true); collection.add(10); for (Object o : collection) { System.out.println("o = " + o); } }}
关键词:
-
Java并发(七)----线程sleep、yield、线程优先级
1、sleep与yieldsleep调用sleep会让当前线程从Running进入TimedWaiting状态(阻塞)其它线程可以使用interr
来源: Java 集合类详解(一)_全球焦点
Java并发(七)----线程sleep、yield、线程优先级
即时设计—小组项目原型示例(附AI功能)
周二银行间回购定盘利率涨跌互现(05-30)
荣耀90系列发布:两款机型详解-世界快报
玩家在《塞尔达传说:王国之泪》造出二极管!信息时代要来了 环球播资讯
商州一出村道路泥泞出行难,主管部门:将用卵石铺设
2023-05-30:Redis6.0为什么要引入多线程呢?
《小美人鱼》真人电影首映三天票房为9540万美元 低于业界预期
微软推出《扫雷》与《纸牌》系列游戏周边商品 为广大电脑玩家熟悉
米哈游举办首届“星辰嘉年华 小王子杯”海外赛事 总奖金高达27万美元
因存在极大的安全隐患 多地管理部门开始立法禁止“低头族”过马路玩手机
梅西加冕五大联赛历史射手王 个人冠军数量追平阿尔维斯
贵州省发展改革委到铜仁市调研峰谷分时电价政策
扎克伯格净资产达到923亿美元 Meta将削减优先级较低的项目
当前观点:茅台冰淇淋一年卖出近千万杯:将研发酒心巧克力、棒支
群联发布新主控E31T:PCIe 5.0 SSD终于要便宜了!
疑台风刮来遍地生蚝 广东居民捡200斤:画面震撼 网友羡慕_每日速递
首发7折 联想65W氮化镓插排明天开售:出差不用带电源了
全球唯一一只纯白色的大熊猫惊艳亮相 被网友戏称为“卸了妆”的国宝
经典漫画《水果篮子》将推出全新舞台剧 预定10月开演
宝可梦社联合NHK交响乐团举行交响音乐会2023 预定8月10日开演
全球快报:中国星辰 | 神舟十六号增强使用北斗导航信号可靠性
呈和科技:166.67万股限售股2023年6月7日解禁
CentOS通过yum安装Docker
环球今热点:4月银行间本币市场:流动性保持合理充裕 债券市场净融资同比大增
分析师称债务上限协议或拖累美国经济
【环球新要闻】论文摘要英文翻译app(论文摘要英文翻译器)
卷疯了!iPhone 14入手仅需4999元|当前要闻
世界即时:奖金高达191万元!米哈游即将推出《原神》首个国际赛事
世界微动态丨专家建议女儿随母姓:传承应该不止是传给儿子、孙子
摩尔线程国产显卡新品发布会官宣!这次会有什么惊喜?
神舟十六号成功发射 美媒纷纷报道:中国剑指登月 全球微速讯
神十六乘组进驻天宫空间站:6位中国航天员太空聚会拍了全家福 环球微头条
腾讯二面:有 40 亿个 QQ 号,限制 1G 内存,问如何去重?被问懵了!
14)系统函数|环球快播
数据的新时代:可交互大屏展现数字孪生的奇妙效果
进入聊天室是什么意思(进入聊天室)
聚焦:谈何和何谈有什么区别(谈何的意思)
昔日国内最强播放器!快播正式宣告破产 王欣早已放下:技术永远无罪
刘慈欣:未来科幻作家会被AI代替 说人有灵魂不过是自我安慰
219元鼠标卷王!达摩鲨M3三模无线鼠标图赏-天天时快讯
世界热议:四川省阿坝藏族羌族自治州黑水县2023-05-30 15:53发布雷电黄色预警
2023新一线城市名单官宣!具体有哪些?最新排名介绍! 天天关注
倒计时7天!AIRIOT新品发布会,6月6日北京见。 环球要闻
焦点简讯:MySQL之DQL数据查询操作
【环球新要闻】Kali渗透Windows服务器
⌈力扣⌋删除字符串中的所有相邻重复项|当前快播
canon(450d)-世界今头条
世界头条:乘联会:2023年4月乘用车新四化指数为78.7
离谱!宠物鳄鱼从20多层高楼坠落摔成重伤 科普:高空坠物有多危险|天天快看
新显卡摆烂 英伟达营收却大涨 老黄这是要抛弃玩家? 每日焦点
【环球聚看点】7699元 Intel蝰蛇峡谷迷你主机618大促:I7-12700H+A770M独显
焦点速递!高速上小孩拉了一下手刹 驾驶证直接被扣了
韩国批准微软收购动视暴雪:份额太小没威胁 环球快播
日照假期2日游,轻轻松松拿捏到位,攻略篇 世界热门
Python 实现 m3u8 视频下载_全球消息
AIGC下的低代码赛道,你我皆是拓荒人
天天观点:【智能软件安全】上海道宁为您带来智能软件安全平台——Veracode,帮助您全面地保护您构建和管理地应用程序
全球即时:商品日报(5月30日):沪锡续涨近3% 纯碱反弹驱动不足再度转跌
全球今头条!辽宁男篮队员韩德君籍贯(韩德君真实身高)
总投入8700多万元 南安一家医院预计年底前投用-最新消息
40年传奇落幕:《夺宝奇兵:命运转盘》国内定档6月30日 环球热头条
618遇上毕业季:这三款高性价比的华硕无畏轻薄本 你值得拥有
全球百事通!2023新一线城市名单官宣: 北方仅4城上榜 有你的家乡吗?
神舟十六号与空间站完成交会对接:3名航天员即将进入天和核心舱|每日看点
猪场夜间电闸跳闸 高温致五千头猪死亡:损失上千万|每日快播
天天快报!刮腻子和刮完腻子有什么区别 刮大白和刮腻子区别
【Haxe】(一)VSCode 搭建 Haxe 开发环境
什么是SSCC码
详解RocketMQ 顺序消费机制 快看点
每日精选:当AI开始制药:研发周期可缩短一半,仍无任何新药面世
【报资讯】每日机构分析:5月30日
老司机注意!昆明警方紧盯酒驾醉驾等严重交通违法行为
6989元起 华硕灵耀13 2023深湖蓝配色上架:2.8K OLED屏
世界观热点:业务能力超强!两只边牧协同驱赶数百只羊:无一走散
笔记本为何还没充满就不再充电了?原因揭开|微动态
曾拒绝生产SUV 法拉利:并不在乎自动驾驶
一代回忆!快播公司破产注销
直播卖酒用“茅台酒厂”误导消费者,北京福气连连公司被罚30万_今日快讯
如何用ReadWriteLock实现一个通用的缓存中心?|环球今热点
速读:13)流程控制语句
一文详解 Sa-Token 中的 SaSession 对象-世界百事通
世界观察:第十二单元 常用API
持球还得练练!杰伦抢七战出现8失误 NBA历史第二多 即时
预算不够免签来凑!米兰开启免签大法,夏窗欲网罗多名自由球员
史莱克七怪神装公布,小舞二次发育,宁荣荣最美,小奥烟熏妆差评-当前热门
环球消息!演唱会门票秒罄!黄牛党捞钱术升级
速看:日本专家三年研究:中学生入学得到手机脑力直接停滞在小学
天天消息!网友评新一代LCD神机Redmi Note 12T Pro:卢伟冰焊门很准
第十一单元 面向对象三:继承与多态_世界热资讯
NTP网络校时服务器 (GPS+北斗+恒温晶振)双系统设计与研究|看点
焦点简讯:[javascript/html] HTML中Location对象详解
省“春蕾计划+我的书房”项目在盐城东台启动 热文
环球资讯:从华为离职创业的天才少年刚拿了百度投资:估值被曝已超独角兽
曾遭霸凌的解说YammerS离世 DOTA2官微回应:深感痛心_全球观天下
每日热议!兄妹四人同时查出肠道肿瘤:1/4肠癌患者受家族因素影响
天玑9300要绝杀:采用4+4全大核架构 性能狙击A17功耗大降
京西产业引导基金签约发布 规模10.1亿元|当前热门
注意防暑!多地高温已超40℃