Java集合-ArraysLIst集合

news2024/12/20 22:45:48

集合是“由若干个确定的元素锁构成的整体”,在程序中,一般代表保存若干个元素(数据)的某种容器类。在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));
	}
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机视觉基础知识(一)--数学基础

向量 线性变换 矩阵 充满数字的表格 矩阵加减法 要满足两个矩阵的行数与列数一致;加法交换律:ABBA 矩阵乘法 要满足A的列数等于B的行数; 单位矩阵 是一个nxn矩阵;从左到右对角线上的元素值为1;其余元素为0;A为nxn矩阵,I为单位矩阵,;单位矩阵在乘法中的作用相当于数字1; 逆矩…

【windows】环境下部署 java 项目

文章目录 前言一、工具&#xff1a;winsw二、使用步骤1.winsw文件2.修改后的winsw文件3.修改testJava.xml文件 三、运行1.注册服务2.注销服务 总结 前言 有时我们部署的环境是 Windows&#xff0c;需要借用 winsw 将 java 发布成服务形式。 提示&#xff1a;以下是本篇文章正文…

go linux监测文件变化

go linux监测文件变化 文件改变内容有两种方式&#xff0c;效果一样&#xff0c;但执行方式有区别: 直接打开文件改&#xff0c;现在很多编辑器都是这样操作的先删除原来的&#xff0c;再新创建写入一个替代原来的。比如vi/vim.这种方式会打断linux inotify原有的监测(就好比…

解决maven远程仓库找不到问题

首先可以修改maven镜像&#xff0c;改成国内镜像 在上步行不通的情况下 可以进行下面的设置 首先jar包下载下来&#xff0c;打开maven的设置 将下面代码改成自己的实际&#xff0c;插入到3中 mvn install:install-file -Dfile{$jar包地址} -DgroupId{$jar包的groupid} -Dar…

web3时事粥报

比特币正成为更具有吸引力的通胀对冲工具 在通胀的宏观经济浪潮中&#xff0c;比特币正逐渐崭露头角&#xff0c;成为那些渴望多元化投资组合的投资者眼中的璀璨明星。Kooner 预测&#xff0c;2024年&#xff0c;各种宏观经济挑战可能进一步提升比特币、黄金和白银等资产的避险…

基于机器学习的曲面拟合方法

随着科技的不断发展&#xff0c;机器学习成为了最近最热门的技术之一&#xff0c;也被广泛应用于各个领域。其中&#xff0c;基于机器学习的曲面拟合方法也备受研究者们的关注。曲面拟合是三维模型处理中的重要技术&#xff0c;其目的是用一组数据点拟合出平滑的曲面&#xff0…

文生视频基础1:sora技术报告学习

sora技术报告学习 背景学后理解训练流程技术拆解编码解码扩散模型训练用数据 28号直播交流会后的一些想法自身的一点点想法 参考 原文地址&#xff1a;Video generation models as world simulators 背景 此项目的背景是基于Datawhale的关于sora技术文档的拆解和相关技术讲解…

安卓tcp ip通讯

废话不多说直接上代码 //权限 引入<uses-permission android:name"android.permission.ACCESS_NETWORK_STATE" /><!--允许应用程序改变网络状态--><uses-permission android:name"android.permission.CHANGE_NETWORK_STATE"/><!--允…

NumpyPython 笔记1 3.4

array.ndim 几维 array.shape 几行&#xff0c;几列 array.size 存在多少个元素 np.array 转化为矩阵 dtype 确定类型&#xff0c;并且确定精度64&#xff1f;32&#xff1f;16&#xff1f;数字越小&#xff0c;越不精确 二维 np.zeros 生成零矩阵&#xff0c;并且规…

java常用应用程序编程接口(API)——Instant,DateTimeFormatter,Period,Duration概述

前言&#xff1a; 整理下学习心得。打好基础&#xff0c;daydayup&#xff01; Instant Instant是时间线上的某个时刻/时间戳&#xff0c;通过获取Instant的对象可以拿到此刻的时间&#xff0c;该时间由两部分组成&#xff1a;1&#xff0c;从1970年1月1日00:00:00开始走到此刻…

驱动开发面试复习

创建字符设备 1 创建设备号 alloc_chrdev_region 2.创建cdev cdev_init 3.添加一个 cdev,完成字符设备注册到内核 cdev_add 4.创建类 class_create 5.创建设备 device_create 1.内核空间与用户空间数据 copy_from_user 和copy_to_user 俩个函数来完成。 copy_from_user 函数…

招聘人才小程序源码系统:多城市招聘平台+招聘会+职场咨询 带完整的搭建教程以及安装代码包

移动互联网的飞速发展&#xff0c;线上招聘已成为企业和求职者之间的重要桥梁。为了满足多城市、多行业、多岗位的招聘需求&#xff0c;以及提供一站式的求职服务&#xff0c;小编给大家分享一款“招聘人才小程序源码系统”。该系统不仅整合了多城市的招聘平台资源&#xff0c;…

ssm226基于jsp的快递管理系统的开发

** &#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;** 一 、设计说明 1.1 研究…

动态库制作

win下扩展名为.dll(dynamic linking library) linux下前缀为dll 扩展名为.so(shared object) linux 下使用动态库步骤 1&#xff0c;制作动态库&#xff0c; libmath.so 2&#xff0c;在主程序中包含动态库&#xff08;就是添加头文件的方法&#xff09; 3&#xff0c;编译…

IO 与 NIO

优质博文&#xff1a;IT-BLOG-CN 一、阻塞IO / 非阻塞NIO 阻塞IO&#xff1a;当一条线程执行read()或者write()方法时&#xff0c;这条线程会一直阻塞直到读取到了一些数据或者要写出去的数据已经全部写出&#xff0c;在这期间这条线程不能做任何其他的事情。 非阻塞NIO&…

[Java 探索之路~大数据篇] 新时代大数据流处理入门指南

本文主要介绍大数据基础&#xff0c;以及 flink 流计算 文章目录 【基础知识】1. 批处理与流处理1.批处理2.流处理 2. 为什么需要一个优秀的流处理框架1. 股票交易的业务场景2.生产者——消费者模型3. 流处理框架要解决的诸多问题&#xff08;1&#xff09;可扩展性&#xff08…

JS 对象数组排序方法测试

输出 一.Array.prototype.sort() 1.默认排序 sort() sort() 方法就地对数组的元素进行排序&#xff0c;并返回对相同数组的引用。默认排序是将元素转换为字符串&#xff0c;然后按照它们的 UTF-16 码元值升序排序。 由于它取决于具体实现&#xff0c;因此无法保证排序的时…

将六西格玛设计融入汽车制造:实践之路

在快节奏的现代生活中&#xff0c;汽车早已不再仅仅是一种交通工具&#xff0c;而是成为了展现个性、追求品质生活的重要象征。为了满足消费者日益增长的品质需求&#xff0c;汽车制造商们纷纷将目光投向了六西格玛设计这一先进的质量管理方法。那么&#xff0c;如何将六西格玛…

现在如何才能开通微信公众号留言功能?

为什么公众号没有留言功能&#xff1f;2018年2月12日之后直到现在&#xff0c;新注册公众号的运营者会发现一个问题&#xff1a;无论是个人还是企业的公众号&#xff0c;在后台都找不到留言功能了。这对公众号来说绝对是一个极差的体验&#xff0c;少了一个这么重要的功能&…

AWS的S3存储桶设置生命周期规则

业务场景&#xff1a;周期性备份数据到s3存储桶&#xff0c;设置定期删除&#xff0c;只保留一定周期内的存储数据&#xff0c;节省存储空间减少花费 1. 点击存储桶选择管理--->创建生命周期规则 2. 设置名称等参数 点击创建即可