Java-Collection家族(List接口)
集合-Collection家族-List接口
List接口
1 特点
有序且可重复(因为List接口中添加了许多针对下标操作的方法)
2 四种实现类的数据类型与特点
a. ArrayList
数据结构:一维数组
特点:存储数据 b. LinkedList
数据结构:双向列表
特点:队列模式、栈模式 c. Vector
数据结构:一维数组
特点:线程安全
d. Stack
继承关系:class Stack extends Vector
特点:栈模式
3 ArrayList(实现类)
3.1 ArrayList的使用
package com.qf.arraylist_class;import java.sql.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;public class Test01 {/*** 知识点:ArrayList的使用*/public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();//添加数据list.add("小希");list.add("小空");list.add("小丽");list.add("小光");list.add("小步");//设置指定下标上的元素list.set(1, "小康");//获取指定下标上的元素String str = list.get(1);System.out.println("获取指定下标上的元素:" + str);//侯小康//获取元素个数int size = list.size();System.out.println("获取元素个数:" + size);//5//在指定下标上添加元素list.add(2, "小飞");ArrayList<String> newList1 = new ArrayList<>();Collections.addAll(newList1, "aaa","bbb","ccc","ccc");//利用集合工具类(Collections)批量添加元素list.addAll(newList1);//将newList1中所有的元素都添加到list集合里末尾的位置ArrayList<String> newList2 = new ArrayList<>();Collections.addAll(newList2, "xxx","xxx","yyy","yyy","zzz","zzz");//利用集合工具类(Collections)批量添加元素list.addAll(3, newList2);//将newList2中所有的元素都添加到list集合里指定下标的位置//清空集合里所有的元素//list.clear();System.out.println("判断集合中是否包含指定元素:" + list.contains("小康"));//trueSystem.out.println("判断集合中是否包含指定集合:" + list.containsAll(newList1));//trueSystem.out.println("获取元素在集合中第一次出现的下标:" + list.indexOf("ccc"));//12System.out.println("获取元素在集合中最后一次出现的下标:" + list.lastIndexOf("ccc"));//13//没有-true,有-falseSystem.out.println("判断集合里是否没有元素:" + list.isEmpty());//falselist.remove(9);//通过下标删除元素list.remove("小丽");//通过数据删除元素list.removeAll(newList1);//将list中有newList1的元素全部删除(去除交集)list.retainAll(newList2);//将list中有newList2的元素全部保留(保留交集)List<String> subList = list.subList(1, 4);//从开始下标处(包含)截取到结束下标处(排他)的元素,返回新的集合//将集合转换为数组Object[] array1 = subList.toArray();System.out.println(Arrays.toString(array1));//[xxx, yyy, yyy]//将集合转换为指定类型的数组String[] array2 = new String[3];subList.toArray(array2);System.out.println(Arrays.toString(array2));//[xxx, yyy, yyy]System.out.println("-----------------------------------------");//遍历集合 -- for循环for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}System.out.println("-----------------------------------------");//遍历集合 -- foreachfor (String element : list) {System.out.println(element);}System.out.println("-----------------------------------------");//遍历集合 -- IteratorIterator<String> it = list.iterator();while(it.hasNext()){//判断是否有可迭代的元素String next = it.next();//获取下一个元素System.out.println(next);}System.out.println("-----------------------------------------");//遍历集合 -- ListIteratorListIterator<String> listIterator = list.listIterator();while(listIterator.hasNext()){//判断是否有可迭代的元素String next = listIterator.next();//获取下一个元素System.out.println(next);}}
}
4 LinkedList(实现类)
4.1 LinkedList的使用(同ArrayList-略)
4.2 LinkedList独有的方法
package com.qf.linkedlist_class;import java.util.LinkedList;public class Test02 {/*** 知识点:LinkedList独有的方法*/public static void main(String[] args) {LinkedList<String> list = new LinkedList<>();list.add("小希1");list.add("小希2");list.add("小希3");list.add("abc");list.add("abc");list.add("AAA");list.add("abc");list.add("abc");//添加到头部list.addFirst("aaa");list.offerFirst("bbb");list.push("ccc");//添加到末尾list.addLast("xxx");list.offer("yyy");list.offerLast("zzz");System.out.println("获取第一个元素:" + list.element());System.out.println("获取第一个元素:" + list.getFirst());System.out.println("获取第一个元素:" + list.peek());System.out.println("获取第一个元素:" + list.peekFirst());System.out.println("获取第一个元素:" + list.pop());System.out.println("获取最后一个元素:" + list.getLast());System.out.println("获取最后一个元素:" + list.peekLast());//删除第一个元素list.poll();list.pollFirst();list.removeFirst();//删除最后一个元素list.pollLast();list.removeLast();//删除第一次出现的元素list.removeFirstOccurrence("abc");//删除最后一次出现的元素list.removeLastOccurrence("abc");//倒序遍历
// Iterator<String> descendingIterator = list.descendingIterator();
// while(descendingIterator.hasNext()){
// String next = descendingIterator.next();
// System.out.println(next);
// }for (String element : list) {System.out.println(element);}}
}
4.3 LinkedList实现队列模式
package com.qf.linkedlist_class;import java.util.LinkedList;public class Test03 {/*** 知识点:LinkedList实现队列模式* * 注意:队列模式 - 先进先出*/public static void main(String[] args) {LinkedList<String> list = new LinkedList<>();list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");list.add("eee");while(!list.isEmpty()){//String element = list.pollFirst();String element = list.removeFirst();System.out.println(element);}System.out.println("集合的元素个数为:" + list.size());//0}
}
4.4 LinkedList实现栈模式
package com.qf.linkedlist_class;import java.util.LinkedList;public class Test04 {/*** 知识点:LinkedList实现栈模式* * 注意:栈模式 - 先进后出/后进先出*/public static void main(String[] args) {LinkedList<String> list = new LinkedList<>();list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");list.add("eee");while(!list.isEmpty()){String element = list.removeLast();System.out.println(element);}System.out.println("集合的元素个数为:" + list.size());//0}
}相关文章:
Java-Collection家族(List接口)
集合-Collection家族-List接口 List接口 1 特点 有序且可重复(因为List接口中添加了许多针对下标操作的方法) 2 四种实现类的数据类型与特点 a. ArrayList 数据结构:一维数组 特点:存储数据 b. LinkedList 数…...
成绩发布小程序哪个好用?
大家好,今天我要来跟大家分享一个超级实用的小秘密——易查分小程序!作为老师,你是不是还在为发放成绩而头疼?是不是还在为通知家长而烦恼?别急,易查分小程序来帮你啦! 易查分简直是老师们的贴心…...
如何让大模型在智能时代背景下更加先进:一种基于时代特征的探讨
随着人工智能技术的飞速发展,大型模型如深度学习网络和强化学习算法已经在各个领域取得了显著的成果。然而,随着应用场景的不断扩展和复杂化,如何让这些大模型在智能时代背景下更加先进,已经成为了一个亟待解决的问题。本文将从以…...
Mac 分享 WIFI 后,iPhone 连接 WIFI,但无法上网
0x00 分享WIFI 如何分享,可查看这篇: MacOS系统如何创建热点并共享Wi-Fi连接 0x01 iPhone 无法上网 打开设置,点击所连 WIFI 进入 配置 DNS 选择 手动 添加 服务器: 公用的有: 114.114.114.114 、180.76.76.76、1…...
C语言编程:揭秘平均输入三个数的艺术
C语言编程:揭秘平均输入三个数的艺术 在C语言编程的广袤天地中,平均输入三个数似乎是一个简单而基础的任务。然而,这个任务却蕴含着许多编程的精髓和技巧。今天,就让我们一同深入探索这个看似简单的任务,揭示其背后的…...
jvm 触发GC的时机和条件
GC的种类 GC又分为 minor GC 和 Full GC (也称为 Major GC ) minor GC:轻GC Full GC(Major GC):重GC Major GC的速度一般会比Minor GC慢十倍以上 什么时候触发GC 程序调用System.gc时可以触发,也不是立即触发…...
UML用例图
一、用例图是什么 用例图是一种描述系统功能的图形化工具,它展示了系统的参与者(用户、其他系统或设备)与用例(系统提供的服务或功能)之间的交互关系。 二、用例图的作用 1、用例图的主要作用 明确系统需求&#x…...
fluent UI v9版本Dialog右上角x按钮聚焦问题解决
右上角x按钮聚焦效果展示 第一次点击不会聚焦,第二次或多次点击会出现这种情况。如果多个地方公用一个页面里,这个页面包含这个组件,那其它页面刚打开弹框就是聚焦状态,是个样式的问题。 解决: import * as React fr…...
【SAP HANA 33】前端参数多选情况下HANA如何使用IN来匹配?
场面描述: 在操作界面经常会出现某个文本框需要多选的情况,然后后台需要根据多选的值进行匹配搜索。 一般处理的情况是: 1、在Java后端动态生成SQL 2、不改变动态SQL的情况,直接当做一个正常的参数进行传递 本次方案是第二个,直接当做一个正常的字符串参数进行传递即…...
Go 语言中常量和变量的定义、使用
Go 语言,作为一种现代编程语言,以其简洁性和高效性赢得了开发者的青睐。在 Go 语言中,常量与变量作为存储和操作数据的基本元素,扮演着至关重要的角色。通过正确理解和使用常量与变量,开发者可以编写出更加健壮和高效的…...
活动预告|6月13日Apache Flink Meetup·香港站
6 月 13 日 | 香港 | 线下 Apache Flink Meetup 的风吹到了香江之畔,Apache Flink 香港 Meetup 来啦!本次活动,我们邀请了来自阿里云的顶尖专家,帮助开发者全面了解 Apache Flink 的流批一体的数据处理能力,流式数据湖…...
算法(七)插入排序
文章目录 插入排序简介代码实现 插入排序简介 插入排序(insertion sort)是从第一个元素开始,该元素就认为已经被排序过了。然后取出下一个元素,从该元素的前一个索引下标开始往前扫描,比该值大的元素往后移动。直到遇到比它小的元…...
抖音太可怕了,我卸载了
这两天刷短视频,上瘾了,太可怕了。 自己最近一直在研究短视频制作,所以下载了抖音,说实话,我之前手机上并没有抖音,一直在用B站。 用了两天抖音,我发现,这玩意比刷B站还容易上瘾啊…...
AI大模型在测试中的深度应用与实践案例
文章目录 1. 示例项目背景2. 环境准备3. 代码实现3.1. 自动生成测试用例3.2. 自动化测试脚本3.3. 性能测试3.4. 结果分析 4. 进一步深入4.1. 集成CI/CD管道4.1.1 Jenkins示例 4.2. 详细的负载测试和性能监控4.2.1 Locust示例 4.3. 测试结果分析与报告 5. 进一步集成和优化5.1. …...
OOP一元多项式类(运算符重载)
题目描述 一元多项式按照升幂表示为: Pn(x) = p0+ p1x + p2x2+ … +pnxn。(n>=0) 构建一元多项式类保存多项式中每项的系数和指数。并重载输入输出运算符,完成多项式的输入以及输出;重载加法,减法,乘法运算符,完成多项式的运算。 输入 测试数据数 对于每组测试数…...
Docker compose 的方式一键部署夜莺
官方安装文档:https://flashcat.cloud/docs/content/flashcat-monitor/nightingale-v7/install/docker-compose/ 介绍:夜莺监控是一款开源云原生观测分析工具,采用 All-in-One 的设计理念,集数据采集、可视化、监控告警、数据分析…...
解锁私域流量的奥秘:构建独特的私域生态
大家好,我是来自一家深耕私域电商领域的技术创新公司,担任资深产品经理一职,已积累了多年的行业经验和独到见解。今天,我想和大家共同探讨私域流量的核心内涵,以及它为何在当前的商业环境中变得如此重要。在私域运营中…...
在CentOS系统上安装Oracle JDK(华为镜像)
在CentOS系统上安装Oracle JDK(华为镜像) 先爱上自己,再遇见爱情,不庸人自扰,不沉溺过去,不为自己的敏感而患得患失,不为别人的过失而任性,这才是终身浪漫的开始。 https://repo.huaweicloud.com/java/jdk …...
7 步解决Android Studio模拟器切换中文输入
详细步骤传送地址:Android Studio 模拟器切换中文输入 目录 01 问题概述 02 模拟器的调试 01 问题概述 大家在使用Android Studio 软件进行项目演示时总会遇到一些输入框需要输入中文汉字的情况,由于AS自带的模拟器基本都是英文,这时就有同…...
如何搭建B2B2C商城系统?开发语言、功能扩展、优势分析
如今,越来越多的企业意识到单靠第三方电商平台不足以快速实现品牌曝光和销售增加,相反还有诸多限制。 因此,搭建一个B2B2C商城也就成为企业发展业务的首选,既可以满足自营和商家入驻的需求,功能操作又灵活,…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
Python 高效图像帧提取与视频编码:实战指南
Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
