Java 进阶(2) Collection集合

news2025/1/19 23:19:31

集合的概念

概念:集合是java中提供的⼀种容器,可以⽤来存储多个数据。

数组:存储⼀组相同数据类型的数据结构。

        局限:定长

集合:动态存放多个对象。

        动态:集合的⼤⼩随着存储的数据量⽽改变。

        多个:0-多个数据

        对象:存储类的实例。基本数据类型--->包装类对象。

集合框架图

java.util.Collection下的接口和继承类关系简易结构图:

 

java.util.Map下的接口和继承类关系简易结构图: 

Collection 常用功能

方法

描述

boolean add(Object obj)

添加⼀个对象数据

boolean addAll(Collection c)

将⼀个集合中的所有对象添加到此集合中

void clear()

清空此集合中的所有对象

boolean contains(Object o)

检查此集合中是否包含o对象

boolean equals(Object o)

比较此集合是否与指定对象相等

boolean isEmpty()

判断此集合是否为空

boolean remove(Object o)

在此集合中移除o对象

int size()

返回此集合中的元素个数

Object[] toArray()

将此集合转换成数组

 示例:

//step1:创建⼀个容器
Collection collection1 = new ArrayList();
System.out.println(collection1);
//step2:往容器中添加元素
boolean flag = collection1.add("abc");//返回⼀个boolean值,判断是否添加成功
System.out.println("flag:"+flag);
//System.out.println(collection1);
collection1.add(true);
collection1.add(123);//---->int---->Integer---->Object
System.out.println(collection1);//重写了toString()⽅法
System.out.println("集合的元素个数:"+collection1.size());
System.out.println("-----------------");
Collection c2 = new ArrayList();
c2.add(12);
c2.add(45);
c2.add(67);
collection1.addAll(c2);//将集合中元素⼀次性添加到⽬标集合中
System.out.println(collection1);
System.out.println("---------");
System.out.println(collection1.contains("abc"));
System.out.println(collection1.containsAll(c2));//判断是否包含集合c2中所
有的元素
System.out.println("-------------");
System.out.println(collection1.isEmpty());//判断集合是否为空
System.out.println("------------");
collection1.remove(true);//删除集合中的⼀个元素
collection1.removeAll(c2);//删除指定的集合中所有的元素
System.out.println(collection1);
System.out.println("--------------");
collection1.clear();
System.out.println("------------");
Collection c3 = new ArrayList();
c3.add(123);
c3.add(345);
collection1.add(123);
collection1.add(true);
collection1.add("abc");
System.out.println(collection1);
collection1.retainAll(c3);//交集:仅保留此集合中包含在指定集合中的元素
System.out.println(collection1);

Iterator迭代器

在程序开发中,经常需要遍历集合中的所有元素。

迭代:即Collection集合元素的通⽤获取⽅式。在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续在判断,如果还有就再取出出来。⼀直把集合中的所有元素全部取出。这种取出⽅式专业术语称为迭代。

Iterator接⼝也是Java集合中的⼀员,但它与Collection、Map接⼝有所不同,Collection接口与Map接口主要用于存储元素,⽽Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象也被称为迭代器下面介绍⼀下获取迭代器的方法:

public Iterator iterator(): 获取集合对应的迭代器,⽤来遍历集合中的元素的。

Iterator接⼝的常用方法如下:

        public E next():返回迭代的下⼀个元素。

        public boolean hasNext():如果仍有元素可以迭代,则返回 true。

step1:先获取集合上的迭代器

        Iterator it = c1.iterator();

step2:先判断迭代器后是否有数据

        it.hasNext()-->boolean

step3:通过迭代器获取集合的元素

        it.next()--->E

Collection<String> c1 = new ArrayList<>();
c1.add("aa");
c1.add("bb");
c1.add("cc");
c1.add("dd");
//3.2使⽤迭代器(迭代器专⻔⽤来遍历集合的⼀种⽅式)
//hasNext();有没有下⼀个元素,
//next();获取下⼀个元素
//remove();删除当前元素
Iterator<String> iterator = c1.iterator();
if(iterator.hasNext()){
    System.out.println(iterator.next());
    //不能使⽤collection删除⽅法,因为遍历同时不能使⽤集合删除⽅法,否则出现并发
    修改异常。
    //可以使⽤迭代器的删除⽅法
    //c1.remove(s);
    //iterator.remove();
}
System.out.println(iterator.next());
System.out.println(iterator.next());
System.out.println(iterator.next());
System.out.println(iterator.next());
System.out.println(iterator.next());//java.util.NoSuchElementException

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python界面开发案例:制作一个计算器软件

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 在我们手机上大家都有一个计算器&#xff0c;对吧 那它这功能是怎么实现的呢&#xff1f; 今天我们在电脑上来实现一个电脑端计算器界面~ 开发环境&#xff1a; Python 3.8 / 编译器 Pycharm 2021.2版本 / 编辑器 本文所有…

leedcode刷题(5)

各位朋友们&#xff0c;大家好&#xff0c;今天是我leedcode刷题的第五篇&#xff0c;我们一起来看看吧。 文章目录栈的压入&#xff0c;弹出序列题目要求用例输入提示做题思路代码实现C语言代码实现Java代码实现最小栈题目要求用例输入提示做题思路代码实现Java代码实现栈的压…

MATLAB绘制局部放大图

MATLAB绘制局部放大图 1 工具准备 MATLAB官网-ZoomPlot(Kepeng Qiu. Matlab Central, 2022) 初始数据图绘制完成后&#xff0c;调用以下代码&#xff1a; %% 添加局部放大 zp BaseZoom(); zp.plot;1.1 具体绘制步骤 具体绘制步骤如下&#xff1a; 通过鼠标左键框选作图区…

STM-32:I2C通信协议—软件I2C读写MPU6050

目录一、I2C通信二、硬件电路三、I2C时序基本单元3.1起始和终止3.1.1起始条件3.1.2终止条件3.2发送一个字节3.3接收一个字节3.4发送应答3.5接收应答四、I2C时序4.1指定地址写4.2当前地址读4.2指定地址读4.3连续读与写五、MPU6050简介六、MPU6050参数七、硬件电路八、MPU6050框图…

用英语翻译中文-汉字英文翻译

中文转英语翻译 作为一款高效、准确的中文转英语翻译软件&#xff0c;我们的产品可以帮助全球用户更好地沟通和合作&#xff0c;实现跨文化交流。 在全球化的今天&#xff0c;中英文翻译已经成为商务、学术、娱乐等各个领域不可或缺的一部分。我们的中文转英语翻译软件是为了…

大学生必备神器

大学生要掌握的办公软件因专业和工作需求而异&#xff0c;但是以下是一些普遍适用于大学生的办公软件&#xff0c;可以帮助提高学习和工作效率&#xff0c;今天就给大家推荐几款大学生常用的软件。 1.OneDrive 这是微软出品的云存储产品&#xff0c;与百度网盘有些类似&#…

龙芯中科官方宣布,龙芯中科企业办公信息化平台全面完成国产化替代

4月4日&#xff0c;龙芯中科官方宣布&#xff0c;龙芯中科企业办公信息化平台全面完成国产化替代。龙芯 ERP 系统全系统使用国产化平台&#xff0c;私有化部署于基于龙芯 3C5000 服务器集群的虚拟化云平台上&#xff0c;使用自研 Loongnix 操作系统、自研 LoongDB 数据库及龙芯…

SpringBoot集成Milo库实现OPC UA客户端:连接、遍历节点、读取、写入、订阅与批量订阅

背景 前面我们搭建了一个本地的 PLC 仿真环境&#xff0c;并通过 KEPServerEX6 读取 PLC 上的数据&#xff0c;最后还使用 UAExpert 作为OPC客户端完成从 KEPServerEX6 这个OPC服务器的数据读取与订阅功能。在这篇文章中&#xff0c;我们将通过 SpringBoot 集成 Milo 库实现一…

idea右边找不到maven窗口不见了的多种解决方法

文章目录1. 文章引言2. 问题的多种解决方法3. 解决问题的其他方法4. 文末总结1. 文章引言 今天在从gitlab上克隆完Maven项目后&#xff0c;在idea中打开时&#xff0c;右边却不见了Maven窗口&#xff0c;如下图所示&#xff1a; 从上图中&#xff0c;你就会发现&#xff0c;明明…

JavaScript变量与基本数据类型

目录 一、声明变量 &#xff08;1&#xff09;let &#xff08;2&#xff09;const &#xff08;3&#xff09;var 二、基本类型 &#xff08;1&#xff09;undefined和null &#xff08;2&#xff09;string &#xff08;3&#xff09;number和bigin &#xff08;4&a…

C#基础复习--数组

数组 目录 数组 数组的类型 数组是对象 声明一维数组或矩形数组 实例化一维数组或矩形数组 访问数组元素 初始化数组 显式初始化一维数组 显式初始化矩形数组 快捷语法 隐式类型数组 交错数组 声明交错数组 快捷实例化 实例化交错数组 交错数组中的子数组 比较矩形数组和交…

【如何使用Arduino控制WS2812B可单独寻址的LED】

【如何使用Arduino控制WS2812B可单独寻址的LED】 1. 概述2. WS2812B 发光二极管的工作原理3. Arduino 和 WS2812B LED 示例3.1 例 13.2 例 24. 使用 WS2812B LED 的交互式 LED 咖啡桌4.1 原理图4.2 源代码在本教程中,我们将学习如何使用 Arduino 控制可单独寻址的 RGB LED 或 …

【数据结构】顺序表详解

本章要分享到内容是数据结构线性表的内容&#xff0c;那么学习他的主要内容就是对数据的增删查改的操作。 以下为目录方便阅读 目录 1.线性表中的顺序表和顺序表 2.顺序表 2.1概念和结构 2.2动态顺序表使用场景 比如我们看到的所显示出来的群成员的列表这样所展示出来的数…

Java——重建二叉树

题目链接 重建二叉树 题目描述 给定节点数为 n 的二叉树的前序遍历和中序遍历结果&#xff0c;请重建出该二叉树并返回它的头结点。 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}&#xff0c;则重建出如下图所示。 题目示例 示例1 输入&…

RK3568平台开发系列讲解(驱动基础篇)V4L2 用户空间 API 说明

🚀返回专栏总目录 文章目录 一、V4L2 用户空间 API二、打开视频设备三、查询设备功能沉淀、分享、成长,让自己和他人都能有所收获!😄 📢设备驱动的主要目的是控制和利用底层硬件,同时向用户展示功能。 这些用户可以是在用户空间或其他内核驱动中运行的应用。 本篇我们…

KIOPTRIX: LEVEL 5通关详解

环境配置 虚拟机网络适配器删了重新上一个就行 信息收集 漏洞发现 两个端口的web页面都没有显著的特征,尝试扫描路径,也没有扫到有价值的信息 8080端口访问被拒绝 在80端口的web页面源码中发现信息 访问 注意到title是pChart 尝试利用 可以知道有目录穿越和xss 我们可以尝…

Java实现根据利润提成发放的奖金,求1感叹号+2感叹号+……+20的和这两个程序的代码

目录 前言 一、根据利润提成发放的奖金 1.1运行流程&#xff08;思想&#xff09; 1.2代码段 1.3运行截图 二、求1!2!3!……20的和 1.1运行流程&#xff08;思想&#xff09; 1.2代码段 1.3运行截图 前言 1.因多重原因&#xff0c;本博文有两个代码程序组成&#xff…

游戏工厂:AIGC/ChatGPT与流程式游戏开发(码客 卢益贵)

关键词&#xff1a;AI&#xff08;AIGC、ChatGPT、文心一言&#xff09;、流程式管理、好莱坞电影流程、电影工厂、游戏工厂、游戏开发流程、游戏架构、模块化开发 一、前言 开发周期长、人工成本高、成功率低等是游戏公司融资困难的罪因。所以有的公司凭一个爆款游戏一骑绝尘…

比GPT-4 Office还炸裂,阿里版GPT全家桶来袭

疯狂3月的那一天&#xff0c;一切还历历在目。 微软突然在发布会上放出大招&#xff0c;用Microsoft 365 Copilot掀起了办公软件革命。 而今天&#xff0c;阿里也放出一枚重磅炸弹——阿里版的Copilot也要来了&#xff01; 并且比微软更彻底的是&#xff0c;阿里全系产品也都…

“我用 ChatGPT 造了一个零日漏洞,成功逃脱了 69 家安全机构的检测!”

一周以前&#xff0c;图灵奖得主 Yoshua Bengio、伯克利计算机科学教授 Stuart Russell、特斯拉 CEO 埃隆马斯克、苹果联合创始人 Steve Wozniak 等在内的数千名 AI 学者、企业家联名发起一则公开信&#xff0c;建议全球 AI 实验室立即停止训练比 GPT-4 更强大的模型&#xff0…