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…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
