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…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
