Java集合-ArraysLIst集合

集合是“由若干个确定的元素锁构成的整体”,在程序中,一般代表保存若干个元素(数据)的某种容器类。在Java中,如果一个Java对象可以在内部持有(保存)若干其他Java对象,并对外提供访问接口,我们把这种Java对象的容器称为集合。

集合大体框架

 

List集合简介

Collection接口是除Map接口外所有集合的跟接口,List集合是一种有序列表的集合,List的行为和数组几乎完全相同,List内部按照放入元素的先后顺序存放,每个元素都可以通过索引确定自己的位置,List的索引和数组一样,从0开始

List集合特点:有序,允许重复

List和数组类似,也是有序结构,使用数组添加和删除元素时,在数组中“添加”的元素时,要添加的位置后面的所有元素需全部依次向后移一个位置为其空出一个位置,相反,删除时全部向前一个位置。而ArraysList在内部使用数组来存储所有元素,当需要在指定位置添加一个元素时,ArraysList自动移动需要移动的位置

List集合的实现类:ArraysList类  LinkedList类  TreeList类

1.ArraysList类

主要方法

  1. add(E e):添加元素至集合尾部
  2. add(int index,E e):添加新元素至指定下标位置
  3. addAll(Collection c):添加另一个集合中所有元素至该集合的尾部
  4. addAll(Collection c):添加另一个集合中所有元素至该集合指定下标位置
  5. get(int index):获取指定下标位置元素
  6. remove(int index):按照指定下标删除元素
  7. remove(Object value):按照值删除
  8. indexOf(Object o):查找元素
  9. set(int index,E e):按照下标修改对应元素
  10. list.clear():清空集合内 所有元素
  11. isContains(E e):查看元素是否在集合内存在
  12. subList(int index,int index):截取子集合
  13. toArray():将集合转换为数组
  14. toArray(T[] a):将集合转换为数组

具体实现如下: 

import java.util.ArrayList;
public class demo01 {
	public static void main(String[] args) {
		ArrayList<String> list=new ArrayList<String>();
		//操作1,添加新元素
		//add(E e)方法:添加新元素至集合的尾部
		list.add("小乔");
		list.add("曹操");
		list.add("大乔");
		list.add("刘备");
		list.add("后羿");
		System.out.println(list);
		list.add(0,"李白");
		System.out.println(list);
		//addAll(Collection c)方法
		//addAll(int index,Collection c)方法
		//添加另外一个集合中所有的元素至当前集合
		ArrayList<String> sublist=new ArrayList<String>();
		sublist.add("孙悟空");
		sublist.add("猪八戒");
		sublist.add("白骨精");
		//将sublist中所有元素添加至list集合的尾部
		list.addAll(sublist);
		//将sublist中所有元素添加至list集合的指定位置
		list.addAll(0, sublist);
		System.out.println(list);
	}
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class demo02 {
	public static void main(String[] args) {
		//创建临时数组的List集合
		List<String> a=Arrays.asList("cd","vd","zw","zx","赵依婷","肖战","wd","ws","yuy","guagau","aja","lala");
		//操作1:全部添加至ArrayList集合中
		ArrayList<String> list=new ArrayList<String>();
		list.addAll(a);
		System.out.println(list);
		
		//操作2:获取元素(按照下标位置,获取元素)
		//get(int index)
		String first=list.get(0);
		String last=list.get(list.size()-1);
		System.out.println("首元素:"+first);
		System.out.println("尾元素:"+last);
		
		//操作3:删除元素(按照下标或值,进行删除)
		//remove(int index);按照下标删除
		//remove(Object value)按照值删除
		System.out.println("删除前:"+list);
		//list.remove(4);
		list.remove("赵依婷");
		System.out.println("删除后:"+list);
		
		//操作4:查找元素
		//index(Object o)
		int index1=list.indexOf("张元英");
		System.out.println("查找一个不存在的元素"+index1);
		int index2=list.indexOf("肖战");
		System.out.println("查找一个存在的元素"+index2);
		
		//清空
		//list.clear();
		
		//查看元素是否存在
		//boolean isContains=list.contains("王一博")
		//System.out.println(isContains);
		
		//截取子集和
		//List<String> subs=list.subList(0,5);
		//System.out.println(subs);
		
		//转换成数组
		Object[] array1=list.toArray(); //Object数组
		String[] array2=list.toArray(new String[list.size()]);//String数组
		
		System.out.println(Arrays.toString(array1));
		System.out.println(Arrays.toString(array2));
	} 
}

用集合实现排序

1.冒泡排序

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;

public class demo03 {
	public static void main(String[] args) {
		ArrayList<String> list=new ArrayList<String>();
		list.addAll(Arrays.asList("D","E","T","G","U","I","O"));
		for(int i=0,n=list.size();i<n-1;i++) {
			for(int k=0;k<n-i-1;k++) {
				if(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);
		//执行结果:[D, E, G, I, O, T, U]

2.使用sort方法

		list=new ArrayList<String>();
		list.addAll(Arrays.asList("D","E","T","G","U","I","O"));
		list.sort(new Comparator<String>(){

			@Override
			public int compare(String o1, String o2) {
				// TODO Auto-generated method stub
				return o1.compareTo(o2);
			}		
		});
		System.out.println(list);
	}
}

通过无参构造方法创建ArraysLiat集合

ArraysList集合内部是一个Object[]数组,当创建一个集合对象时,会初始化一个数组,当第一次添加元素时,数组扩容10,当数组容量不足时,该数组的容量扩容为原容量的1.5倍。

import java.util.ArrayList;
import java.util.Arrays;

public class demo04 {
	public static void main(String[] args) {
		//通过【无参构造方法】创建ArraysListJ集合
		//数组默认被初始化成一个空数组
		ArrayList<Integer> list1=new ArrayList<Integer>();
		list1.add(1587);
		list1.add(2355);
		list1.add(4873);
		list1.add(2465);
		//添加至第11个元素时,容量不足,再次将数组扩容,按照原数组的1.5倍
		ArrayList<Integer> list2=new ArrayList<Integer>();
		ArrayList<Integer> list3=new ArrayList<Integer>(Arrays.asList(1,2,3));
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/425011.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Sora模型风口,普通人如何抓住-最新AI系统ChatGPT网站源码,AI绘画系统

一、前言说明 PandaAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧。已支持…

python标识符、变量和常量

一、保留字与标识符 1.1保留字 保留字是指python中被赋予特定意义的单词&#xff0c;在开发程序时&#xff0c;不可以把这些保留字作为变量、函数、类、模块和其它对象的名称来使用。 比如&#xff1a;and、as、def、if、import、class、finally、with等 查询这些关键字的方…

通过 Jenkins 经典 UI 创建一个基本流水线

通过 Jenkins 经典 UI 创建一个基本流水线 点击左上的 新建任务。 在 输入一个任务名称字段&#xff0c;填写你新建的流水线项目的名称。 点击 流水线&#xff0c;然后点击页面底部的 确定 打开流水线配置页 点击菜单的流水线 选项卡让页面向下滚动到 流水线 部分 在 流水线 …

软考55-上午题-【数据库】-数据库设计步骤1

一、数据库设计的步骤 新奥尔良法&#xff0c;四个主要阶段&#xff1a; 1、用户需求分析&#xff1a;手机用户需求&#xff0c;确定系统边界&#xff1b; 2、概念设计&#xff08;概念结构设计&#xff09;&#xff1a;是抽象概念模型&#xff0c;较理想的是采用E-R方法。 …

uniapp聊天记录本地存储(详细易懂)

目录 目录 1、通过websocket拿取数据 2、获取聊天数据 3、聊天信息存储 、更新 4、读取聊天记录 5、发送信息&#xff0c;信息获取 6、最终效果 1.聊天信息的存储格式 2、样式效果 写聊天项目&#xff0c;使用到了本地存储。需要把聊天信息保存在本地&#xff0c;实时获…

如何限制一个账号只在一处登陆

大家好&#xff0c;我是广漂程序员DevinRock&#xff01; 1. 需求分析 前阵子&#xff0c;和问答群里一个前端朋友&#xff0c;随便唠了唠。期间他问了我一个问题&#xff0c;让我印象深刻。 他问的是&#xff0c;限制同一账号只能在一处设备上登录&#xff0c;是如何实现的…

Vue中如何实现动态路由?

在前端开发中&#xff0c;Vue.js 是一个极为流行的 JavaScript 框架&#xff0c;提供了灵活性和易用性&#xff0c;使得开发者可以快速构建单页面应用&#xff08;SPA&#xff09;。在 Vue 中&#xff0c;我们经常需要处理动态路由的情况&#xff0c;比如根据用户的操作或者权限…

Linux——进程控制(二)进程等待

目录 前言 一、进程等待 二、如何进行进程等待 1.wait 2.waitpid 2.1第二个参数 2.2第三个参数 3. 等待多个进程 三、为什么不用全局变量获取子进程的退出信息 前言 前面我们花了大量的时间去学习进程的退出&#xff0c;退出并不难&#xff0c;但更深入的学习能为本…

IPC资源在linux内核中如何管理

1.先看各个通信的接口 1.共享内存接口 2.消息队列接口 3.信号量接口 2.管理他们的结构体&#xff1a; 其实管理他们的是一个数组&#xff0c;和open返回的fd差不多&#xff0c;shmid&#xff0c;msqid,semid的大小都是这个数组的下标。那数组的结构是什么呢&#xff1f; 然后…

UniApp项目处理小程序分包

目前 uniApp也成为一种 App端开发的大趋势 因为在目前跨端 uniApp可以说相当优秀 可以同时兼容 H5 PC 小程序 APP 的技术 目前市场屈指可数 那么 说到微信小程序 自然就要处理分包 因为微信小程序对应用大小限制非常铭感 限制在2MB 超过之后就会无法真机调试与打包 不过需要注…

前端学习第四天-css提升

达标要求 掌握css复合选择器 块级元素和行内元素及行内块的区别? 哪些元素是块元素,行内元素及行内块元素? 熟练掌握display的用法 能够说出css三大特性 熟练运用背景样式 1. CSS复合选择器 复合选择器是由两个或多个基础选择器&#xff0c;通过不同的方式组合而成的…

使用 Docker 部署 MrDoc 在线文档管理系统

1&#xff09;MrDoc 介绍 MrDoc 简介 MrDoc 觅思文档&#xff1a;https://mrdoc.pro/ MrDoc 使用手册&#xff1a;https://doc.mrdoc.pro/p/user-guide/ MrDoc 可以创建各类私有化部署的文档应用。你可以使用它进行知识管理、构建团队文库、制作产品手册以及在线教程等。 Mr…

抖音视频批量采集软件|视频评论下载工具

在日常工作中&#xff0c;需要频繁下载抖音视频&#xff0c;但逐个复制分享链接下载效率太低&#xff1f;别担心&#xff01;我们推出了一款专业的抖音视频批量采集软件&#xff0c;基于C#开发&#xff0c;满足您的需求&#xff0c;让您通过关键词搜索视频并自动批量抓取&#…

Zookeeper学习2:原理、常用脚本、选举机制、监听器

文章目录 原理选举机制&#xff08;重点&#xff09;情况1&#xff1a;正常启动集群情况2&#xff1a;集群启动完&#xff0c;中途有机器挂了 监听器客户端向服务端写入数据客户端向服务端Leader节点写入客户端向服务端Follower节点写入 Paxos算法&#xff08;每个节点都可以提…

Dynamo幕墙探究系列(四)——Revolve

我们先放一张截图&#xff0c;不再是通过 loft 创建模型&#xff0c;而是通过旋转生成模型&#xff0c;效果如下&#xff0c;今天我们就来聊聊这个模型是怎么生成得。 “旋转”&#xff0c;顾名思义&#xff0c;和 Revit 中创建形状的旋转是一个意思&#xff0c;只是用来旋转的…

【MATLAB】 CEEMDAN信号分解+FFT傅里叶频谱变换组合算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~ 展示出图效果 1 CEEMDAN信号分解算法 CEEMDAN 分解又叫自适应噪声完备集合经验模态分解&#xff0c;英文全称为 Complete Ensemble Empirical Mode Decomposition with Adaptive Noise。 CEEMDAN是对CEEMD的进一步改进…

MySQL 教程 2.4

MySQL UNION 操作符 本教程为大家介绍 MySQL UNION 操作符的语法和实例。 描述 MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合&#xff0c;并去除重复的行。 UNION 操作符必须由两个或多个 SELECT 语句组成&#xff0c;每个 SELECT 语句的列数…

蓝桥杯倒计时 41天 - KMP 算法

KMP算法 KMP算法是一种字符串匹配算法&#xff0c;用于匹配模式串P在文本串S中出现的所有位置。 例如S“ababac&#xff0c;P“aba”&#xff0c;那么出现的所有位置是13。 在初学KMP时&#xff0c;我们只需要记住和学会使用模板即可&#xff0c;对其原理只需简单理解&#xff…

会员丨这些年开的会员

1、淘宝88VIP-88元/年 要说现在最实惠的会员&#xff0c;肯定是88vip莫属了。88元/年即可拥有&#xff1a; 优酷/芒果年卡&#xff1b; 饿了么年卡&#xff08;每月4张吃货卡&#xff0c;但现在饿了么改的越来越不实惠了&#xff09;&#xff1b; 网易云音乐年费会员&#xf…

NACOS在Windows和Linux下的安装教程

目录 1、Windows安装 1.1、下载安装包 1.2、解压 1.3、端口配置 1.4、启动 1.5、访问 2、Linux安装 2.1、安装JDK 2.2、上传安装包 2.3、解压 2.4、端口配置 2.5、启动 3、Nacos的依赖 1、Windows安装 开发阶段采用单机安装即可。 1.1、下载安装包 在Nacos的Git…