Java基础关键_017_集合(一)
目 录
一、概述
二、Collection 关系结构
1.概览
2.说明
三、Collection 接口
1.通用方法
(1)add(E e)
(2)size()
(3)addAll(Collection c)
(4)contains(Object o)
(5)remove(Object o)
(6)clear()
(7)isEmpty()
(8)toArray()
2.通用遍历(迭代)※
四、SequencedCollection 接口
1.说明
2. 方法
(1)addFirst(Object o)
(2) addLast(Object o)
(3)removeFirst()
(4)removeLast()
(5)getFirst()
(6)getLast()
(7)reversed()
一、概述
集合是一种容器,用来组织和管理数据;
每一个集合类底层的数据结构不同;
集合中存储的是引用,是将对象的地址存储在集合中;
默认情况下,若不使用泛型,集合中可存储任何类型的引用,只要是 Object 的子类即可;
Java 集合框架相关类在 java.util 下;
Java 集合框架分为:Collection 结构(元素以单个形式存储)、Map 结构(元素以键值对的映射关系存储)。
二、Collection 关系结构
1.概览

2.说明
jdk 21 新增 SequencedCollection 接口和 SequencedSet 接口;
LinkedList、ArrayList、Vector、Stack、TreeSet、HashSet、LinkedHashSet 是实现类,其余都是接口;
实现类中,只有 HashSet 是无序集合,其余为有序集合。有序集合是存储的元素有下标或可排序,无序集合是存储的元素无下标且未排序;
LinkedList 是双向链表,不是队列数据结构,但是可以模拟队列;
ArrayList 是数组;
Vector 是线程安全的数组;
HashSet 是哈希表;
LinkedHashSet 是双向链表和哈希表的联合体;
TreeSet 是红黑树;
List 集合存储的元素可以重复,而 Set 集合存储的元素不可重复。
三、Collection 接口
1.通用方法
(1)add(E e)
向集合中添加元素。
public class CollectionTest {public static void main(String[] args) {Collection c = new ArrayList();c.add(123);c.add(520.1314);c.add("Hello");c.add(true);c.add(new Object());}
}
(2)size()
获取集合中元素的个数。
public class CollectionTest {public static void main(String[] args) {Collection c = new ArrayList();c.add(123);c.add(520.1314);c.add("Hello");c.add(true);c.add(new Object());System.out.println(c.size()); // 5}
}
(3)addAll(Collection c)
将参数集合中全部元素加入到当前集合。
public class CollectionTest {public static void main(String[] args) {Collection c = new ArrayList();c.add(123);c.add(520.1314);c.add("Hello");c.add(true);c.add(new Object());System.out.println(c.size()); // 5Collection c2 = new ArrayList();c2.add(123);c2.add(520.1314);System.out.println(c2.size()); // 2c.addAll(c2);System.out.println(c.size()); // 7}
}
(4)contains(Object o)
判断集合中是否包含对象 o 。
public class CollectionTest {public static void main(String[] args) {Collection c = new ArrayList();c.add(123);c.add(520.1314);c.add("Hello");c.add(true);c.add(new Object());System.out.println(c.contains(520.1314)); // trueSystem.out.println(c.contains(false)); // falseString s = "Hello";System.out.println(c.contains(s)); // true// 因为集合存储的是对象的引用,所以,如果存储的是对象,那么判断的时候,需要使用equals方法进行比较}
}
(5)remove(Object o)
从集合中删除对象 o 。
public class CollectionTest {public static void main(String[] args) {Collection c = new ArrayList();c.add(123);c.add(520.1314);c.add("Hello");c.add(true);c.add(new Object());String s = "Hello";System.out.println(c.size()); // 5c.remove(s);System.out.println(c.size()); // 4// 因为集合保存的是引用,所以删除的是s在集合中的引用,也会调用equals方法}
}
(6)clear()
清空集合。
public class CollectionTest {public static void main(String[] args) {Collection c = new ArrayList();c.add(123);c.add(520.1314);c.add("Hello");c.add(true);c.add(new Object());System.out.println(c.size()); // 5c.clear();System.out.println(c.size()); // 0}
}
(7)isEmpty()
判断集合中的元素个数是否为 0 。
public class CollectionTest {public static void main(String[] args) {Collection c = new ArrayList();c.add(123);c.add(520.1314);c.add("Hello");c.add(true);c.add(new Object());System.out.println(c.isEmpty()); // falseCollection c2 = new ArrayList();System.out.println(c2.isEmpty()); // true}
}
(8)toArray()
将集合转换成一维数组。
public class CollectionTest {public static void main(String[] args) {Collection c = new ArrayList();c.add(123);c.add(520.1314);c.add("Hello");c.add(true);c.add(new Object());Object[] array = c.toArray();for (Object o : array) {System.out.print(o + "\t");}// 123 520.1314 Hello true java.lang.Object@682a0b20}
}
2.通用遍历(迭代)※
public class CollectionTest {public static void main(String[] args) {/*** 集合的遍历*/Collection collection = new ArrayList();collection.add(1);collection.add(2);collection.add(3);// 1.获取当前集合依赖的迭代器对象Iterator iterator = collection.iterator();System.out.println(iterator); // 输出迭代器对象// 2.循环,当前指向位置是否存在元素while (iterator.hasNext()) {// 3.将当前指向位置的元素取出,并向下移动一位Object obj = iterator.next();System.out.print(obj + "\t");}// 1 2 3}
}
四、SequencedCollection 接口
1.说明
- jdk 21 新增,之前没有的;
- 所有有序集合都实现了该接口;
- LinkedList、ArrayList、Vector、TreeSet、LinkedHashSet 可以调用该接口的方法。
2. 方法
(1)addFirst(Object o)
向头部添加一个元素。
(2) addLast(Object o)
向尾部添加一个元素。
(3)removeFirst()
删除头部元素。
(4)removeLast()
删除尾部元素。
(5)getFirst()
获取头部节点。
(6)getLast()
获取尾部节点。
(7)reversed()
反转集合中的元素。
相关文章:
Java基础关键_017_集合(一)
目 录 一、概述 二、Collection 关系结构 1.概览 2.说明 三、Collection 接口 1.通用方法 (1)add(E e) (2)size() (3)addAll(Collection c) (4)contains(Object o) &#…...
Rust编程实战:Rust实现简单的Web服务,单线程性能问题
知识点 tcp 服务多线程处理 实现功能 启动web服务,访问链接获取页面内容。 单线程web服务 TcpListener 使用 TcpListener 开启服务端口 let listener TcpListener::bind("127.0.0.1:7878").unwrap();处理客户端连接: for stream in lis…...
GitLab 密钥详解:如何安全地使用 SSH 密钥进行身份验证
目录 一、什么是 GitLab SSH 密钥?二、为什么要使用 SSH 密钥?三、如何生成 SSH 密钥?1. Linux/macOS2. Windows 四、将公钥添加到 GitLab五、配置 SSH 客户端六、常见问题及解决方案七、总结 GitLab 是一个功能强大的 Git 仓库管理平台&…...
《论数据分片技术及其应用》审题技巧 - 系统架构设计师
论数据分片技术及其应用写作框架 一、考点概述 本论题“论数据分片技术及其应用”主要考察的是软件工程中数据分片技术的理解、应用及其实际效果分析。考点涵盖以下几个方面: 首先,考生需对数据分片的基本概念有清晰的认识,理解数据分片是…...
【C++】当一个类A中没有声明任何成员变量和成员函数,sizeof(A)是多少?
在 C 中,即使一个类没有任何数据成员(即空类),它的大小也不会是 0,而是 1。这主要有以下几个原因: 地址唯一性要求 C 标准规定,每个对象都必须有唯一的地址。如果空类的大小为 0,那么…...
Maven 私服的搭建与使用(一)
一、引言 在 Java 项目开发中,Maven 作为强大的项目管理和构建工具,极大地提高了开发效率,而 Maven 私服在开发过程中也扮演着至关重要的角色。私服是一种特殊的远程仓库,架设在局域网内,代理广域网上的远程仓库&…...
Ubuntu20.04双系统安装及软件安装(五):VSCode
Ubuntu20.04双系统安装及软件安装(五):VSCode 打开VScode官网,点击中间左侧的deb文件下载: 系统会弹出下载框,确定即可。 在文件夹的**“下载”目录**,可看到下载的安装包,在该目录下…...
linux网络(3)—— socket编程(1)socket基础认识
欢迎来到博主的专栏:linux网络 博主ID:代码小豪 文章目录 IP与端口号socket字节序问题 IP与端口号 我们现在知道了,只要发送的报文的报头包含目的IP地址和源IP地址,就能通过通信设备,是两台主机进行远程通信ÿ…...
【Kubernets】K8S内部nginx访问Service资源原理说明
文章目录 原理概述**一、核心概念****二、Nginx 访问 Service 的流程****1. Service 的作用****2. Endpoint 的作用****3. Nginx Pod 发起请求****(1) DNS 解析****(2) 流量到达 kube-proxy****(3) 后端 Pod 处理请求** **三、不同代理模式的工作原理****1. iptables 模式****2…...
使用Docker搭建Oracle Database 23ai Free并扩展MAX_STRING_SIZE的完整指南
使用Docker搭建Oracle Database 23ai Free并扩展MAX_STRING_SIZE的完整指南 前言环境准备目录创建启动Docker容器 数据库配置修改进入容器启动SQL*PlusPDB操作与字符串扩展设置配置验证 管理员用户创建注意事项总结 前言 本文将详细讲解在Docker环境中配置Oracle Database 23a…...
使用pytorch和opencv根据颜色相似性提取图像
需求:将下图中的花朵提取出来。 代码: import cv2 import torch import numpy as np import timedef get_similar_colors(image, color_list, threshold):# 将图像和颜色列表转换为torch张量device torch.device(cuda if torch.cuda.is_available() el…...
MySQL 8.X 报错处理
1.重新加载配置 reload the configuration mysql> ALTER INSTANCE RELOAD KEYRING; ERROR 1227 (42000): Access denied; you need (at least one of) the ENCRYPTION_KEY_ADMIN privilege(s) for this operation 提示需要ENCRYPTION_KEY_ADMIN权限 重新授权 GRANT ENCR…...
Ubuntu 22.04安装OpenJDK 17
步骤一:更新软件包 sudo apt update步骤二:安装openjdk-17 sudo apt install openjdk-17-jdk当系统要求输入密码时,请输入密码。然后键入 Y 并按 Enter 继续安装 步骤三:查看安装版本 java -version步骤四:查看安装…...
【时序预测】时间序列有哪些鲁棒的归一化方法
时间序列数据在金融、气象、医疗等领域中广泛存在,而股票数据作为典型的时间序列之一,具有非平稳性、噪声多、波动大等特点。为了更好地进行数据分析和建模,归一化是一个重要的预处理步骤。然而,由于时间序列数据的特殊性…...
nlp第九节——文本生成任务
一、seq2seq任务 特点:输入输出均为不定长的序列 自回归语言模型: 由前面一个字预测下一个字的任务 encoder-decoder结构: Encoder-Decoder结构是一种基于神经网络完成seq2seq任务的常用方案 Encoder将输入转化为向量或矩阵,其…...
STM32MP1xx的启动流程
https://wiki.st.com/stm32mpu/wiki/Boot_chain_overview 根据提供的知识库内容,以下是STM32 MPU启动链的详细解析: 1. 通用启动流程 STM32 MPU启动分为多阶段,逐步初始化外设和内存,并建立信任链: 1.1 ROM代码&…...
wgcloud-server端部署说明
Wgcloud 是一款开源的轻量级服务器监控系统,支持多平台,可对服务器的 CPU、内存、磁盘、网络等指标进行实时监控。 以下是 Wgcloud Server端的详细部署步骤: 环境准备 服务器: 至少准备两台服务器,一台作为监控端&a…...
大模型Agent:人工智能的崭新形态与未来愿景
在人工智能技术高歌猛进的当下,大模型 Agent 作为 AI 领域的关键研究方向,正日益彰显出其独有的魅力以及广阔无垠的应用前景。大模型 Agent 不但具备对环境的感知、自主的理解、决策的制定以及行动的执行能力,而且能够游刃有余地应对繁杂任务…...
专题二最大连续1的个数|||
1.题目 题目分析: 给一个数字k,可以把数组里的0改成1,但是只能改k次,然后该变得到的数组能找到最长的子串且都是1。 2.算法原理 这里不用真的把0变成1,因为改了比较麻烦,下次用就要改回成1,这…...
【ORACLE】ORACLE19C在19.13版本前的一个严重BUG-24761824
背景 最近在某客户的ORACLE开发环境(oracle 19.10)中,发现一个非常奇怪情况, 开发人员反馈,有一条SQL,查询了两个sum函数作为两个字段, select sum(c1),sum(c2) from ...当两个sum一起出现时,第一个sum的结果不对&am…...
LFM2.5-1.2B-Thinking-GGUF集成Python爬虫实战:智能数据采集与清洗
LFM2.5-1.2B-Thinking-GGUF集成Python爬虫实战:智能数据采集与清洗 1. 当爬虫遇上大模型:数据采集的新思路 传统爬虫开发就像在迷宫里摸索前行——你需要手动解析每个网站的HTML结构,针对不同反爬机制编写特定规则,还要处理杂乱…...
全网最全!网络安全全岗位解析(2026版)
全网最全!网络安全全岗位解析(2026版) 摘要:随着数字化转型加速,网络安全已成为企业、政务、互联网大厂的核心刚需,人才缺口持续扩大,2026年国内网络安全人才缺口已突破327万,全球缺…...
运维面试别再背八股文了!这15道高频笔试题,我用真实排错案例给你讲透
运维面试突围指南:用真实故障案例拆解15道高频技术题 去年冬天的一个凌晨,我接到了一通紧急电话——某电商平台的支付系统突然瘫痪,每分钟损失超过六位数。当我顶着寒风赶到机房时,发现这只是因为一个简单的NTP时间不同步问题。这…...
永磁同步电机全速域无位置传感器控制探索之旅
永磁同步电机全速域无位置传感器控制(高频注入改进滑膜控制方法,PMSM矢量控制仿真) 永磁同步电机-PMSM的仿真-原理-算法-复现 1)关于PMSM控制算法的文章复现、matlab编程仿真等均可,Matlab/Simulink仿真建模 分析建模 …...
百川2-13B-Chat惊艳效果展示:同一提示词下Temperature=0.3与0.9输出对比
百川2-13B-Chat惊艳效果展示:同一提示词下Temperature0.3与0.9输出对比 你有没有想过,同一个问题问给同一个AI,为什么每次的回答都不太一样?有时候它像个严谨的学者,回答得一丝不苟;有时候又像个天马行空的…...
我把DeepSeek调教成了我的‘专属文案总监’:角色扮演Prompt的实战配置手册
把DeepSeek调教成你的「专属文案总监」:高阶Prompt工程实战指南 当市场部的Lisa第一次用AI生成产品文案时,她得到的是一篇充满技术术语的说明文;而运营总监Mike让AI写的周报,读起来像学术论文。这就像给米其林大厨一台高级烤箱&a…...
Python+PySpark+Hadoop房价预测系统 房价预测 房源推荐系统 二手房推荐系统 随机森林回归预测模型、链家二手房 可视化大屏
1、项目 介绍 技术栈: Python房价预测分析系统 毕业设计 大屏 爬虫 机器学习 Flask框架、Echarts可视化、requests 爬虫、随机森林回归预测模型、链家二手房2、项目界面 (1)数据可视化大屏(2)房价预测(3&am…...
为什么选择yfinance:3步实现免费金融数据获取的完整解决方案
为什么选择yfinance:3步实现免费金融数据获取的完整解决方案 【免费下载链接】yfinance Download market data from Yahoo! Finances API 项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance 在金融数据分析的世界里,你是否曾为获取高质…...
LLM4Decompile:用AI魔法让二进制代码重获新生![特殊字符]
LLM4Decompile:用AI魔法让二进制代码重获新生!🚀 【免费下载链接】LLM4Decompile LLM4Decompile是前端技术的革新之作,面向软件逆向工程领域的革命性工具。此开源项目利用大型语言模型深入二进制世界的奥秘,将复杂的机…...
Duix-Avatar全离线数字人创作平台深度指南:从部署到高级应用
Duix-Avatar全离线数字人创作平台深度指南:从部署到高级应用 【免费下载链接】Duix-Avatar 项目地址: https://gitcode.com/GitHub_Trending/he/Duix-Avatar 价值解析:Duix-Avatar的SWOT战略分析 优势(Strengths) 全栈本地化架构:所…...
