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集合)
什么是集合? 什么是集合?集合就是“由若干个确定的元素所构成的整体”,在程序中,一般代表保存 若干个元素(数据)的某种容器类。 在Java中,如果一个Java对象可以在内部持有(保存&…...
7、Json文件的操作总结【robot framework】
1、JSONLibrary简介 Robot Framework 是一种通用的自动化测试框架,它支持使用关键字驱动的测试,并且易于学习和使用。Robot Framework 提供了丰富的标准库,而 JSONLibrary 就是其中之一,用于处理 JSON 数据。 安装 JSONLibrary 在…...
python 循环解压 解压多重压缩包
在实际数据中,经常会有压缩包套压缩包的情况,并且有可能出现“zip”压缩包下面套“tar”的可能。 你可以运行后面的代码,来完成自动解压。代码会不断检查folder_a_path 文件夹下是否还有压缩包。目前支持zip、rar、tar、7z等四种格式的压缩文…...
基于C#制作一个连连看小游戏
基于C#制作一个连连看小游戏,实现:难易度选择、关卡选择、倒计时进度条、得分计算、音效播放等功能。 目录 引言游戏规则开发环境准备游戏界面设计游戏逻辑实现图片加载与显示鼠标事件处理游戏优化与扩展添加关卡与难度选择说明</...
Android-System 根据包名查找已安装应用apk方法
1、根据包名查找应用的安装路径 dumpsys package packageName | grep Path 例如: 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
题目 题目链接: https://www.luogu.com.cn/problem/P4124 分析 给定两个长度为11位的数字,代表两个区间 [L,R] 需要编写程序来计算出,这两个区间内满足要求的数字个数。这样的题一般来说就是数位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的风格化…...
精要图示:园区金融数字化服务蓝图,以园区为支点推动信贷业务增长
作为企业集聚地,园区已然成为银行业夯实客群基础的重要切口,各大行陆续围绕园区场景创新金融产品,以期抢跑园区金融新赛道、把握新增量。 启信慧眼首推一站式【园区金融】数字化服务方案,该方案同时支持启信天元私有化部署&#x…...
2024 中国(南京)国际口腔设备器械博览会
2024 中国(南京)国际口腔设备器械博览会 时间:2024 年 7 月 18-20 日 地点:南京国际展览中心 WeChat_20230512134641 主办单位: 南京民营口腔医疗协会 北京铭曼国际展览有限公司 承办单位: 北京铭曼国际展览有限公司 展会介绍 随…...
【MyBatis】快速入门MyBatis(保姆式教学),你值得一看
文章目录 📄前言一. Mybatis简介✈️1. 什么是Mybatis🚀2. 为什么使用Mybatis 二. Mybatis快速入门🍆1. mybatis使用前准备1.1 创建springboot项目并引入相关依赖1.2 在 application.ym中进行数据源的配置1.3 创建数据表,准备表数…...
git pull代码时候报错:error: cannot open .git/FETCH_HEAD: Permission denied
git pull代码时候报错: error: cannot open .git/FETCH_HEAD: Permission denied 原因: 当前登录用户没有修改目录的权限。 解决办法: 修改当前目录权限 1. whoami 查看当前登录用户 xxx$ whoami 假设上边查询登陆账号为:csd…...
shell - 正则表达式和grep命令和sed命令
一.正则表达式概述 1.正则表达式定义 1.1 定义 使用字符串描述、匹配一系列符合某个规则的字符串 1.2 了解 普通字符: 大小写字母、数字、标点符号及一些其它符号元字符: 在正则表达式中具有特殊意义的专用字符 1.3 层次分类 基础正则表达式扩展正…...
datawhale 大模型学习 第十二章-大模型环境影响
环境影响概述 气候变化:大语言模型(LLM)的训练和运行需要大量计算资源,导致显著的能源消耗和温室气体排放,加剧气候变化。能源消耗:训练LLM的计算过程消耗大量电力,间接增加了化石燃料的使用&a…...
Qt WebEngine模块使用(开发环境安装和程序开发)
一、Qt WebEngine Qt WebEngine_hitzsf的博客-CSDN博客 Qt WebEngine模块提供了一个Web浏览器引擎,可以轻松地将万维网上的内容嵌入到没有本机Web引擎的平台上的Qt应用程序中。Qt WebEngine提供了用于渲染HTML,XHTML和SVG文档的C 类和QML类型ÿ…...
网络体系结构 和网络原理之UDP和TCP
目录 网络分层 一. 应用层 http协议 二. 传输层 1. 介绍 2.UDP协议 (1)组成 (2)细节 3.TCP协议 (1)特性如下链接: (2)组成 (3)特点 三. 网络层 四. 数据链路层 1.介绍 2.以太网协议 3.mac地址和ip地址 五. 物理层 DNS 网络分层 一. 应用层 应用程序 现成的…...
将Android APP安装到sm8550 HDK的NVMe SSD
APP存储路径 在Android中,App在运行过程中主要访问的数据路径通常包括以下几个方面: 内部存储(Internal Storage):App会访问其私有的内部存储空间,这个空间通常位于: /data/data/<package…...
(Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
国家青藏高原科学数据中心下载中国1千米分辨率逐日全天候地表土壤水分数据集(2003-2022) 问题:数据在arcgis打开特别大,无法和矢量数据重合,没有设置地理坐标系 数据在网站上提供了投影信息,提示可以进行py…...
Linux:进度条的创建
目录 使用工具的简单介绍: \r : fflush : 倒计时的创建: 倒计时的工作原理: 进度条的创建: 不同场景下、打印任意长度的进度条: main .c procbor.c 测试效果: 使用工具…...
treeview
QML自定义一个TreeView,使用ListView递归 在 Qt5 的 QtQuick.Controls 2.x 中还没有 TreeView 这个控件(在 Qt6 中出了一个继承自 TableView 的 TreeView),而且 QtQuick.Controls 1.x 中的也需要配合 C model 来自定义,…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...
使用SSE解决获取状态不一致问题
使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件,这个上传文件是整体功能的一部分,文件在上传的过程中…...
Pydantic + Function Calling的结合
1、Pydantic Pydantic 是一个 Python 库,用于数据验证和设置管理,通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发(如 FastAPI)、配置管理和数据解析,核心功能包括: 数据验证:通过…...
