当前位置: 首页 > 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…...

Android开发中自定义View实现RecyclerView下划线

本篇文章主要讲解的是有关RecyclerView下划线的使用&#xff0c;主要有几个方法&#xff0c;具体如下&#xff1a; 第一种方式&#xff1a;网格分割线 public class GridDivider extends RecyclerView.ItemDecoration { private Drawable mDividerDarwable; private i…...

MySQL前百分之N问题--percent_rank()函数

PERCENT_RANK()函数 PERCENT_RANK()函数用于将每行按照(rank - 1) / (rows - 1)进行计算,用以求MySQL中前百分之N问题。其中&#xff0c;rank为RANK()函数产生的序号&#xff0c;rows为当前窗口的记录总行数 PERCENT_RANK()函数返回介于 0 和 1 之间的小数值 selectstudent_…...

【高效开发工具系列】Wolfram Alpha

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

分享7种SQL的进阶用法

推荐一款ChatGPT4.0国内站点,每日有免费使用额度,支持PC、APP、VScode插件同步使用 SQL(Structured Query Language)是一种强大的数据库查询和操作语言,它用于与关系数据库进行交互。随着数据的不断增长和应用需求的日益复杂,掌握SQL的进阶用法对于数据库管理员、数据分析…...

protobuf-go pragma.go 文件介绍

pragma.go 文件 文件位于&#xff1a; https://github.com/protocolbuffers/protobuf-go/blob/master/internal/pragma/pragma.go 该文件核心思想&#xff1a; 利用 Golang 语法机制&#xff0c;扩展 Golang 语言特性 目前&#xff0c;该文件提供以下 4 个功能&#xff1a; …...

C#设置程序开机启动

1&#xff1a;获取当前用户&#xff1a; System.Security.Principal.WindowsIdentity identity System.Security.Principal.WindowsIdentity.GetCurrent();System.Security.Principal.WindowsPrincipal principal new System.Security.Principal.WindowsPrincipal(identity);…...

爱可声助听器参与南湖区价值百万公益助残捐赠活动成功举行

“声音大小合适吗&#xff1f;能听清楚吗&#xff1f;”今天下午&#xff0c;一场助残捐赠活动在南湖区凤桥镇悄然举行&#xff0c;杭州爱听科技有限公司带着验配团队和听力检测设备来到活动现场&#xff0c;为南湖区听障残疾人和老人适配助听器。 家住余新镇的75岁的周奶奶身体…...

SpringBoot 实现定时任务

在项目我们会有很多需要在某一特定时刻自动触发某一时间的需求&#xff0c;例如我们提交订单但未支付的超过一定时间后需要自动取消订单。 定时任务实现的几种方式&#xff1a; Timer&#xff1a;java自带的java.util.Timer类&#xff0c;使用这种方式允许你调度一个java.util…...

将Vue2中的console.log调试信息移除

前端项目构建生产环境下的package时&#xff0c;咱们肯定要去掉development环境下的console.log&#xff0c;如果挨个注释可就太费劲了&#xff0c;本文介绍怎么使用 babel-plugin-transform-remove-console 移除前端项目中所有的console.log. 1. 安装依赖 npm install babel-…...

EMC设计检查建议,让PCB layout达到最佳性能

EMC&#xff1a;Electro Magnetic Compatibility的简称&#xff0c;也称电磁兼容&#xff0c;各种电气或电子设备在电磁环境复杂的共同空间中&#xff0c;以规定的安全系数满足设计要求的正常工作能力。 本章对于 RK3588产品设计中的 ESD/EMI防护设计及EMC的设计检查给出了建议…...