当前位置: 首页 > news >正文

Java集合(List集合)

什么是集合?
什么是集合?集合就是“由若干个确定的元素所构成的整体”,在程序中,一般代表保存
若干个元素(数据)的某种容器类。

在Java中,如果一个Java对象可以在内部持有(保存)若干其他Java对象,并对
外提供访问接口,我们把这种Java对象的容器称为集合。很显然,Java的数组也可以看作
是一种集合:
 

既然]ava提供了数组这种数据类型,可以充当集合,那么,我们为什么还需要其他集合
类?这是因为数组有如下限制:
·数组初始化后大小不可变:
·数组只能按索引顺序存取;
因此,我们需要各种不同类型的集合类来处理不同的数据,例如:
·可变大小的顺序链表;
·保证无重复元素的集合:
 

 集合接口
Java标准库自带的java.util包提供了集合相关的接口和实现类:
Collectioni接口,它是除Map接口外所有其他集合类的根接口。
Java的java.util包主要提供了以下三种类型的集合:
List:一种有序列表的集合:
Set:一种保证没有重复元素的集合:
Map:一种通过键值(key-value)查找的映射表集合,例如,根据Student的name查找对应Student的Map。

 ArrayList

package com.xn.ffur;import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class Fur02 {public static void main(String[] args) {//创建临时的List集合List<String> foodlist=Arrays.asList("馅饼","胡辣汤","油条","包子","窝窝头","豆浆","馒头");//全部添加至ArrayList集合中ArrayList<String> list=new ArrayList<String>();list.addAll(foodlist);//操作1:添加新元素//add(E,e)方法:添加元素至集合的尾部list.add("三明治");System.out.println(list);//操作2:获取元素(按照下标位置,获取元素)//get(int index)String first=list.get(0);System.out.println("首元素"+first);String last=list.get(list.size()-1);System.out.println("尾元素"+last);//操作3:查找元素//indexOf(Object o)int index1=list.indexOf(first);System.out.println("查找一个存在的元素时:"+index1);int index2=list.indexOf(last);System.out.println("查找一个存在的元素时:"+index2);//操作4:删除元素(按照下标或值,进行删除)//remove(int index)按下标删除//remove(Object value)按值删除System.out.println(list);list.remove("豆浆");System.out.println("删除后:"+list);//操作5:修改元素//set(int index,E e):按照下标位置修改System.out.println("修改前:"+list);list.set(2, "汉堡");System.out.println("修改后"+list);//查看元素是否存在boolean isContains=list.contains("馅饼");System.out.println(isContains);//截取子集合List<String> sub=list.subList(1, 5);System.out.println(sub);//转化成数组Object[] arr1=list.toArray();String[] arr2=list.toArray(new String[list.size()]);System.out.println(Arrays.toString(arr1));System.out.println(Arrays.toString(arr2));//清空list.clear();System.out.println(list);}
}
package com.xn.ffur;import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;public class Fur03 {public static <T> void main(String[] args) {ArrayList<String> list = new ArrayList<String>();list.addAll(Arrays.asList("E", "A", "N", "C", "P", "Z"));// 方式1:冒泡排序for(int i=0,n=list.size();i<n-1;i++) {for(int k=0;k<n-i-1;k++) {while(list.get(k).compareTo(list.get(k+1))>0) {String temp=list.get(k);list.set(k, list.get(k+1));list.set(k+1, temp);}}}System.out.println(list);// 方式2:使用sort()方法list = new ArrayList<String>();list.addAll(Arrays.asList("C", "Y", "O", "R", "T", "D"));list.sort(new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {return o1.compareTo(o2);}});System.out.println(list);}
}
package com.xn.ffur;import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;public class Fur04 {public static void main(String[] args) {//通过无参构造方法创造Array List集合//数组默认被初始化成一个空数组ArrayList<Integer> list1=new ArrayList<Integer>();list1.add(1);//添加第1个元素时,将数组扩容为10list1.add(2);//添加第11个元素时,容量不足,再次将数组扩容,按照原容量的1.5倍//通过【有参构造方法】创建ArrayList集合//根据预估数据元素的规模数量,初始化elementData数组//减少扩容的次数频率ArrayList<Integer> list2=new ArrayList<Integer>(100);//创建集合时,传入另外一个Collection集合,并且按照该集合的元素进行初始化ArrayList<Integer> list3=new ArrayList<Integer>(Arrays.asList(100,101,102));}
}

LinkedList

package com.xn.ffur;import java.util.LinkedList;public class Fur05 {public static void main(String[] args) {LinkedList<String> list=new LinkedList<String>();//添加新元素//add()/list.addLate():将新元素提娜佳至链表的尾部list.add("a");list.add("b");list.add("c");	list.add("d");	list.add("e");	list.addFirst("f");//将新元素提娜佳至链表的尾部list.addLast("l");System.out.println(list);//获取元素//过呢据元素的下标位置,在链表中遍历,查找获取元素String item=list.get(1);System.out.println(item);//获取链表的头元素和尾元素String  first=list.getFirst();String last=list.getLast();System.out.println(first);//删除元素list.remove(1);//根据下表删除list.remove("b");//根据值list.removeFirst();//删除链表的头元素list.removeLast();//删除链表的尾元素}
}

Stack栈

package com.xn.ffur;import java.util.Stack;
import java.util.Vector;public class Fur06 {public static void main(String[] args) {//创建栈Stack<String> stack=new Stack<String>();//添加新元素(向栈顶添加)stack.push("s1");stack.push("s2");stack.push("s3");stack.push("s4");stack.push("s5");stack.push("s6");System.out.println(stack);//获取元素(从栈顶获取并删除元素)System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack);//取出栈顶元素System.out.println(stack.peek());System.out.println(stack.peek());//遍历栈while(!stack.isEmpty()) {System.out.println(stack.pop());}}
}
package com.xn.ffur;import java.util.Stack;public class Fur07 {public static void main(String[] args) {//方式1;Stack栈String s="长江后浪推前浪";Stack<Character> stack=new Stack<Character>();for(int i=0;i<s.length();i++) {char c=s.charAt(i);stack.push(c);}StringBuilder ret=new StringBuilder();while(!stack.isEmpty()) {ret.append(stack.pop());}System.out.println(ret);//方式2:StringBuilderStringBuilder sb=new StringBuilder();sb.reverse();System.out.println(sb);}
}

相关文章:

Java集合(List集合)

什么是集合&#xff1f; 什么是集合&#xff1f;集合就是“由若干个确定的元素所构成的整体”&#xff0c;在程序中&#xff0c;一般代表保存 若干个元素&#xff08;数据&#xff09;的某种容器类。 在Java中&#xff0c;如果一个Java对象可以在内部持有&#xff08;保存&…...

7、Json文件的操作总结【robot framework】

1、JSONLibrary简介 Robot Framework 是一种通用的自动化测试框架&#xff0c;它支持使用关键字驱动的测试&#xff0c;并且易于学习和使用。Robot Framework 提供了丰富的标准库&#xff0c;而 JSONLibrary 就是其中之一&#xff0c;用于处理 JSON 数据。 安装 JSONLibrary 在…...

python 循环解压 解压多重压缩包

在实际数据中&#xff0c;经常会有压缩包套压缩包的情况&#xff0c;并且有可能出现“zip”压缩包下面套“tar”的可能。 你可以运行后面的代码&#xff0c;来完成自动解压。代码会不断检查folder_a_path 文件夹下是否还有压缩包。目前支持zip、rar、tar、7z等四种格式的压缩文…...

基于C#制作一个连连看小游戏

基于C#制作一个连连看小游戏,实现:难易度选择、关卡选择、倒计时进度条、得分计算、音效播放等功能。 目录 引言游戏规则开发环境准备游戏界面设计游戏逻辑实现图片加载与显示鼠标事件处理游戏优化与扩展添加关卡与难度选择说明</...

Android-System 根据包名查找已安装应用apk方法

1、根据包名查找应用的安装路径 dumpsys package packageName | grep Path 例如&#xff1a; kona:/ # dumpsys package com.yw_pt.oshnoh | grep PathcodePath/data/app/com.yw_pt.oshnoh-N4rPqGh58weRjMpA1q3evwresourcePath/data/app/com.yw_pt.oshnoh-N4rPqGh58weRjMpA1q3…...

洛谷-P4124题-手机号码-Java

题目 题目链接&#xff1a; https://www.luogu.com.cn/problem/P4124 分析 给定两个长度为11位的数字&#xff0c;代表两个区间 [L,R] 需要编写程序来计算出&#xff0c;这两个区间内满足要求的数字个数。这样的题一般来说就是数位dp题。首先我们可以根据容斥原理 [0,R]中满…...

仅使用 Python 创建的 Web 应用程序(前端版本)第08章_商品详细

在本章中,我们将实现一个产品详细信息页面。 完成后的图像如下。 Model、MockDB、Service都是在产品列表页实现的,所以创建步骤如下。 No分类内容1Page定义PageId并创建继承自BasePage的页面类2Application将页面 ID 和页面类对添加到 MultiPageApp 的页面中Page:定义PageI…...

Stable Diffusion 长视频真人动画风格互转

Stable Diffusion Temporal-Kit和EbSynth 从娱乐到商用 1. Temporal Kit 和 EbSynth1.1 提取关键帧1.2 关键帧风格迁移1.3 生成序列帧2. 真人转卡通3. 卡通转真人4. 编辑技巧5. ControlNet + TemporalNet + 达芬奇Fusion6. Rerender A Video7. DiffSynth-Studio基于SD的风格化…...

精要图示:园区金融数字化服务蓝图,以园区为支点推动信贷业务增长

作为企业集聚地&#xff0c;园区已然成为银行业夯实客群基础的重要切口&#xff0c;各大行陆续围绕园区场景创新金融产品&#xff0c;以期抢跑园区金融新赛道、把握新增量。 启信慧眼首推一站式【园区金融】数字化服务方案&#xff0c;该方案同时支持启信天元私有化部署&#x…...

2024 中国(南京)国际口腔设备器械博览会

2024 中国&#xff08;南京&#xff09;国际口腔设备器械博览会 时间&#xff1a;2024 年 7 月 18-20 日 地点&#xff1a;南京国际展览中心 WeChat_20230512134641 主办单位: 南京民营口腔医疗协会 北京铭曼国际展览有限公司 承办单位: 北京铭曼国际展览有限公司 展会介绍 随…...

【MyBatis】快速入门MyBatis(保姆式教学),你值得一看

文章目录 &#x1f4c4;前言一. Mybatis简介✈️1. 什么是Mybatis&#x1f680;2. 为什么使用Mybatis 二. Mybatis快速入门&#x1f346;1. mybatis使用前准备1.1 创建springboot项目并引入相关依赖1.2 在 application.ym中进行数据源的配置1.3 创建数据表&#xff0c;准备表数…...

git pull代码时候报错:error: cannot open .git/FETCH_HEAD: Permission denied

git pull代码时候报错&#xff1a; error: cannot open .git/FETCH_HEAD: Permission denied 原因&#xff1a; 当前登录用户没有修改目录的权限。 解决办法&#xff1a; 修改当前目录权限 1. whoami 查看当前登录用户 xxx$ whoami 假设上边查询登陆账号为&#xff1a;csd…...

shell - 正则表达式和grep命令和sed命令

一.正则表达式概述 1.正则表达式定义 1.1 定义 使用字符串描述、匹配一系列符合某个规则的字符串 1.2 了解 普通字符&#xff1a; 大小写字母、数字、标点符号及一些其它符号元字符&#xff1a; 在正则表达式中具有特殊意义的专用字符 1.3 层次分类 基础正则表达式扩展正…...

datawhale 大模型学习 第十二章-大模型环境影响

环境影响概述 气候变化&#xff1a;大语言模型&#xff08;LLM&#xff09;的训练和运行需要大量计算资源&#xff0c;导致显著的能源消耗和温室气体排放&#xff0c;加剧气候变化。能源消耗&#xff1a;训练LLM的计算过程消耗大量电力&#xff0c;间接增加了化石燃料的使用&a…...

Qt WebEngine模块使用(开发环境安装和程序开发)

一、Qt WebEngine Qt WebEngine_hitzsf的博客-CSDN博客 Qt WebEngine模块提供了一个Web浏览器引擎&#xff0c;可以轻松地将万维网上的内容嵌入到没有本机Web引擎的平台上的Qt应用程序中。Qt WebEngine提供了用于渲染HTML&#xff0c;XHTML和SVG文档的C 类和QML类型&#xff…...

网络体系结构 和网络原理之UDP和TCP

目录 网络分层 一. 应用层 http协议 二. 传输层 1. 介绍 2.UDP协议 (1)组成 (2)细节 3.TCP协议 (1)特性如下链接&#xff1a; (2)组成 (3)特点 三. 网络层 四. 数据链路层 1.介绍 2.以太网协议 3.mac地址和ip地址 五. 物理层 DNS 网络分层 一. 应用层 应用程序 现成的…...

将Android APP安装到sm8550 HDK的NVMe SSD

APP存储路径 在Android中&#xff0c;App在运行过程中主要访问的数据路径通常包括以下几个方面&#xff1a; 内部存储&#xff08;Internal Storage&#xff09;&#xff1a;App会访问其私有的内部存储空间&#xff0c;这个空间通常位于&#xff1a; /data/data/<package…...

(Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息

国家青藏高原科学数据中心下载中国1千米分辨率逐日全天候地表土壤水分数据集&#xff08;2003-2022&#xff09; 问题&#xff1a;数据在arcgis打开特别大&#xff0c;无法和矢量数据重合&#xff0c;没有设置地理坐标系 数据在网站上提供了投影信息&#xff0c;提示可以进行py…...

Linux:进度条的创建

目录 使用工具的简单介绍&#xff1a; \r &#xff1a; fflush &#xff1a; 倒计时的创建&#xff1a; 倒计时的工作原理&#xff1a; 进度条的创建&#xff1a; 不同场景下、打印任意长度的进度条&#xff1a; main .c procbor.c 测试效果&#xff1a; 使用工具…...

treeview

QML自定义一个TreeView&#xff0c;使用ListView递归 在 Qt5 的 QtQuick.Controls 2.x 中还没有 TreeView 这个控件&#xff08;在 Qt6 中出了一个继承自 TableView 的 TreeView&#xff09;&#xff0c;而且 QtQuick.Controls 1.x 中的也需要配合 C model 来自定义&#xff0c…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

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...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...