动态数组的实现案例

简介: Java动态数组是一种可以任意伸缩数组长度的对象,在Java中比较常用的是List。下面介绍一下List作为Java动态数组的用法。 我们可以首先编写两个类List.java  和一个测试类Test1.java。将主类和测试类分开写,更有利于扩展性,这是一个非常好的编程思想。下面来看一下我们如何来实现List类。注释已经写得很清楚了,如果有不懂的地方欢迎留言。 //定义一个容器类p

Java动态数组是一种可以任意伸缩数组长度的对象,在Java中比较常用的是List。下面介绍一下List作为Java动态数组的用法。

我们可以首先编写两个类List.java  和一个测试类Test1.java。将主类和测试类分开写,更有利于扩展性,这是一个非常好的编程思想。下面来看一下我们如何来实现List类。注释已经写得很清楚了,如果有不懂的地方欢迎留言。

//定义一个容器类
public class List{
	final int INIT_LENGTH=10;
	int[] array=new int[INIT_LENGTH];
	int index=-1;

	int add(int [] newArray){
		int temp=index;
		if(newArray==null){
			System.out.println("数组不能为空");
			return -1;
		}

	if(index+1+newArray.length>array.length){
		int newlength=(index+1+newArray.length)*2;
		expand(newlength);
	}
	System.arraycopy(newArray,0,array,index+1,newArray.length);
	index=index+newArray.length;
	return temp+1;
	}

	//方法的重载
	void expand(int newlength){
		//新创建一个数组,这个新数组的长度两倍大
		int[] x=new int[newlength];
		//复制array中的数据到x中
		System.arraycopy(array,0,x,0,array.length);
		array=x;
	}

	void expand(){
		//新创建一个数组,这个新数组的长度两倍大
		int[] x=new int[array.length*2];
		//复制array中的数据到x中
		System.arraycopy(array,0,x,0,array.length);
		array=x;
	}

	//输出指定位置的元素
	int remove(int i){
		//判断i是否存在
		if(i>=0&&i<index){
			System.arraycopy(array,i+1,array,i,index-i);
			index--;
		}else{
			System.out.println("集合中没有这个索引"+i);
			return -1;
		}
		return -1;
	}


	//添加元素到指定位置
	//value:要添加的值
	//i:添加到数组的位置
	//返回值:添加元素的索引
	int add(int value,int i){
		if(i<0||i>index+1){
			System.out.println("索引越界"+i);
			return -1;
		}
	if(index>=array.length-1){
		expand();
	}

	index++;
	System.arraycopy(array,i,array,i+1,index-i);
	array[i]=value;
	return i;

	}
	//清空
	void clear(){
		array=new int[INIT_LENGTH];
		index=-1;
	}

	//求出容器的真实大小
	int size(){
		return index+1;
	}

	void add(int value){
		if( index>=array.length-1){
			expand();

		}
		index++;
		array[index]=value;
	}

	int[] getArray(){

		//新创建一个数组
		int[] result=new int[index+1];

		System.arraycopy(array,0,result,0,index+1);
		return result;
	}
}

接下来,我们把测试类写好。

public class Test1{
	public static void main(String[] args){
		List list=new List();
		int[] r=list.getArray();
		for(int t:r){
			System.out.println(t);
		}

	//开始存元素
	list.add(1);
	list.add(2);
	r=list.getArray();
	for(int t:r){
		System.out.println(t);
	}

	System.out.println("list容器中有"+list.size());
	for(int i=0;i<10;i++){
		list.add(i);
	}
	//存完后
	r=list.getArray();

	for(int t:r){
		System.out.println(t);
	}
	System.out.println("list容器中有"+list.size());
	System.out.println("清空===================");
	list.clear();
	System.out.println("清空后,list容器中有"+list.size());

	System.out.println("移除===================");
	for(int i=0;i<10;i++){
		list.add(i);
	}
	list.remove(3);
	r=list.getArray();

	for(int t:r){
		System.out.println(t);
	}
	System.out.println("在指定位置添加元素");
	list.add(888,1000);
	r=list.getArray();
}
}
然后呢,我们使用javac Test1.java     

java Test1

就可以顺利编译运行了。


目录
相关文章
|
移动开发 小程序 JavaScript
【小程序质量提优解决方案】(二)内嵌H5加载异常(404)
【小程序质量提优解决方案】(二)内嵌H5加载异常(404)
836 0
|
6月前
|
弹性计算
阿里云服务器如何购买价格更便宜?领优惠券便宜购买图文教程参考
本文介绍2026年阿里云服务器最新优惠购买教程:首先注册或登录阿里云账号,选好配置后查看价格;接着进入上云第一站活动领取满减券包;再通过云服务器ECS专属活动下单,个人用户多选轻量应用服务器和经济型e实例,企业用户多选通用算力型u2i和计算型c9i等实例。以计算型c9i实例2核4G配置为例,按教程购买,使用优惠券后,实际价格可再减100元。
|
3月前
|
人工智能 前端开发 安全
周一上线|1M 上下文成标配,GPT-5.5 更会干活;Google 拟最高 400 亿美元加码 Anthropic
先看模型这边,沉寂 15 个月后,DeepSeek 终于发布了 V4 预览版,而且照例开源。最猛的是,它直接把 1M 上下文做成了标配,量大管饱。OpenAI 那边,比 DeepSeek 早一天发布的 GPT-5.5,主打“更人性化”,在带起一众模型“稳稳接住”“懂你所想”的风潮之后,这回 GPT-5.5 不弯不绕,反倒显得清新脱俗。当然,模型的重点还是能力:Agentic Coding、Computer Use 和复杂任务处理,GPT-5.5 较之前版本都有很大提升。
1198 1
周一上线|1M 上下文成标配,GPT-5.5 更会干活;Google 拟最高 400 亿美元加码 Anthropic
|
4月前
|
人工智能 JSON 运维
AI 智能体的开发流程
AI智能体开发不同于传统编程,聚焦提示词工程、模型能力边界、工具编排与持续对齐。全流程含六大阶段:需求定义→架构设计→提示与工具编排→测试对齐→部署集成→运维飞轮。强调MVP验证、数据驱动迭代与低代码到代码的渐进演进。(239字)
|
3月前
|
人工智能 API 网络安全
被称作爱马仕的Hermes Agent深度解析 不止OpenClaw平替 自主进化AI智能体全介绍
2026年开源AI智能体领域迎来高速爆发期,各类智能体框架层出不穷,不断刷新开发者对自动化任务、自主交互的认知。在OpenClaw凭借强大的任务执行能力火爆全网、被开发者戏称为“龙虾智能体”之际,另一款全新开源项目Hermes Agent迅速崛起,快速登顶开源项目热度榜单,在短期时间内收获海量开发者关注,平台周增长率达到惊人的367%,一跃成为现象级AI智能体。
632 0
|
5月前
|
存储 人工智能 关系型数据库
阿里云数据库产品活动:上云优选,RDS年付88元起!多款云数据库产品免费试用
阿里云2026年数据库产品活动更新,覆盖RDS、PolarDB、NoSQL及数据仓库全系产品,提供从3折起的超值折扣、新老用户同享的专属福利及免费试用机会。活动涵盖2核4GB至8核16GB多规格配置,RDS 年付88元起!更有续费/升级享5-6折优惠。
1063 4
|
6月前
|
XML JSON 调度
个税生成模拟器,计算Python个税处理模块
该项目用于生成木器加工的计算模块,采用Python编程语言实现,主要技术栈包括Python核心库及数值计算相关模块。
784 0
|
存储 数据建模 索引
NumPy 1.26 中文官方指南(三)(1)
NumPy 1.26 中文官方指南(三)
424 1
|
人工智能 自然语言处理 搜索推荐
魔搭ModelScope社区作为一个AI模型开源平台,提供了丰富的模型资源和便捷的服务
【2月更文挑战第9天】魔搭ModelScope社区作为一个AI模型开源平台,提供了丰富的模型资源和便捷的服务
1239 3
|
监控 负载均衡 架构师
架构师养成手册:性能指数
本文介绍了架构师关注的性能指标,包括QPS(每秒查询率)、TPS(每秒事务处理数)、RT(响应时间)、UV(独立访客数)、并发数和线程数。QPS和TPS衡量系统处理能力,RT影响用户体验,UV评估网站流量,高并发和线程管理关乎系统稳定性和效率。理解并优化这些指标有助于构建高性能系统。
661 8