`
sxyplibo
  • 浏览: 6579 次
文章分类
社区版块
存档分类
最新评论

java数组菜鸟升级版(队列=“无限数组”?)

    博客分类:
  • java
阅读更多

       数组作为一种便捷的储存大量同类型数据的数据结构,是很常用并且很受欢迎的,但是刚刚接触时处理具体情境总是会遇到一个问题:在不知道数据数量的情况下,如何定义数组长度?

       本文以一维数组为例,来解决这个问题,指导建立队列,并介绍一些简单的操作(多维只是比一维多几维而已,没什么大区别的,就是加几阶循环罢了)。

       直接配着代码来讲吧

 

 

 

 

 

 

public class array {
	//定义一个长度为0的初始数组(不知道长度?先建一个固定长度的总可以吧)
	String[] src = new String[0];
	//建立队列(队列的实质,就是当原有数组不够用时,建一个新的,在把内容加进去,
	就像我们嫌弃衣服小了,就再买一件新的大一点的衣服,再把人“装进去”)
	public void add(String s){
		//定义新数组,长度是原始数组长度+1
		String[] dest = new String[src.length+1];
		//将原数组中的数据按下标顺序拷贝到新数组
		for(int i=0;i<src.length;i++){
			dest[i]=src[i];
		}
		//将新元素放到新数组最后一个下标位置(继续添加元素)
		dest[src.length] = s;
		//将新数组赋给原数组(其实就是src这个数组名由原先的数组的地址改
		为向新数组的首地址)
		src = dest;	
	}
	//至此无限数组完成,只要注意添加方式是用add,就可以无限添加对应类型的数据
	//接下来是对数组相关知识的一些扩充,因为本质和刚刚的“无限数组”类似,一起介绍	 
	
	/**
	 * 首先是取出对应下标位置的元素!!!
	 * @param index 元素的下标位置
	 * @return 返回取得的元素
	 */
	public String get(int index){
	    if(index<0||index>=src.length){	
		     throw new RuntimeException("传入的下标超出边界:"
				+src.length);
	    }
	    return src[index];
	}
	
	
	/**
	 * 容器中的元素个数
	 * @return 返回元素个数
	 */
	public int size(){
		return src.length;
	}
		
//	*******************************************
	/**
	 * 现在来删除指定下标的元素~(删是加的反面~)
	 */
	public void delete(int index){
		//定义新数组,长度是原始数组长度-1
		String[] dest = new String[src.length-1];
		//将原数组中的数据按下标顺序拷贝到新数组(跳过指定位置的元素)
		for(int i=0;i<index;i++){
			dest[i]=src[i];
		}
		for(int i=index+1;i<src.length;i++){
			dest[i-1]=src[i];
		}
		//将新数组赋给原数组
		src = dest;	
	}//其实就是在复制数组时跳过指定元素不复制
	
		
	/**
	 * now,我们来将值为s的元素删除(套用一下上一个吧)	
	 * @param 指定元素s
	 */
	public void delete(String s){
		for(int i=0;i<src.length;i++){
			if(src[i].contains(s))//确定该元素下标
				delete(i);
		}
	}//contains这类函数还有很多,在这里equals也可以起到一样的作用
		
	/**
	 * 恩,这回是插入……
	 * 将指定元素s插入指定位置index
	 * @param s
	 * @param index
	 */
	public void insert(String s,int index){
		//定义新数组,长度是原始数组长度+1
		String[] dest = new String[src.length+1];
		//将原数组中的数据按下标顺序拷贝到新数组
		for(int i=0;i<index;i++){
			dest[i]=src[i];
		}
		//将新元素放到新数组指定下标位置
		dest[index] = s;
		for(int i=index;i<src.length;i++){
			dest[i+1]=src[i];
		}
		//将新数组赋给原数组
		src = dest;	
	}//就是在复制过程中加一个,是删除和添加的原理结合
		
	/**
	 * 最后,将指定位置的元素修改为指定的值
	 * @param 修改后元素s
	 * @param 指定位置index
	 */
	public void modify(String s,int index){
		//定义新数组,长度是原始数组长度
		String[] dest = new String[src.length];
		//将原数组中的数据按下标顺序拷贝到新数组
		for(int i=0;i<index;i++){
			dest[i]=src[i];
		}
		//将新元素放到新数组指定下标位置
		dest[index] = s;
		for(int i=index+1;i<src.length;i++){
			dest[i]=src[i];
		}
		//将新数组赋给原数组
		src = dest;	
	}//好吧,它是复制过程中把跳过的那个赋了值		

}


 

              其实其他几个功能是队列(add)的衍生,有时候一点点的创意的火花可以点燃一片草原,而每颗小草都可以发展成一片草原,多维数组就交个读者自己发展吧~~

 

 

分享到:
评论

相关推荐

    excel数组公式从入门到精通、数组公式经典教程、山菊花讲数组、菜鸟级excel数组公式入门教程四部.rar

    第四部分“菜鸟级excel数组公式入门教程”显然是为初级用户设计的,旨在帮助新手快速上手。这部分可能专注于最基础的数组公式操作,如如何处理多行多列的数据,以及如何避免常见的错误。教程可能以简单的步骤引导...

    培训-Java基础-数组&集合.ppt

    培训-Java基础-数组&集合.ppt 培训用的ppt 主要讲了java数组和集合 供需要的朋友使用

    java菜鸟教程_JAVA菜鸟教程_

    【Java菜鸟教程】是针对初学者精心编写的教程,旨在帮助新手快速掌握Java编程语言的基础知识。本教程全面覆盖了Java的核心概念和技术,是学习Java编程的理想起点。 首先,Java是一种面向对象的编程语言,由Sun ...

    java菜鸟学习第一步-java基础语法

    Java语言的数组可以是一维数组或多维数组。数组的定义可以使用int a[]或int[][]等形式。数组的长度可以使用a.length获取。 表达式 Java语言的表达式包括基本运算符、单目运算符、判断符号、对象运算符等。 * 基本...

    从Java菜鸟到专家的资料

    这份名为“从Java菜鸟到专家的资料”的压缩包文件包含了丰富的学习资源,旨在帮助初学者逐步成长为Java领域的专家。以下是对各个文件的详细解读: 1. **J2EE研究文集.chm**:这个文件专注于Java企业级应用开发,...

    runoob菜鸟教程的java教程

    Java分为三个主要的体系结构版本:Java SE(标准版)、Java EE(企业版)、Java ME(微型版)。Java SE是核心,为桌面和服务器提供了基础的Java平台;Java EE构建在Java SE之上,提供了创建企业级应用程序和服务的...

    Java图解创意编程:从菜鸟到互联网大厂之路.pptx

    1. Java编程基础知识:变量、数据类型、控制流语句、函数、数组、链表、栈、队列、树等。 2. Java常用算法和数据结构:冒泡排序、选择排序、插入排序、链表、树等。 3. Java网络编程基础知识:TCP/IP协议、Socket...

    Java常用工具类+菜鸟入门版

    在Java编程语言中,工具类(Utility Classes)是那些提供了静态方法或属性,通常用于执行特定辅助任务的类。它们不包含公开构造器,因为它们的设计不允许实例化。Java标准库(Java API)中就包含了许多这样的工具类...

    Java培训教程 菜鸟到高手

    "Java培训教程 菜鸟到高手"是一套旨在帮助初学者全面掌握Java编程技能的教程。这个教程的目标是通过系统性的学习,将新手逐步引领至高级开发者水平。 首先,Java基础知识是学习的起点。包括Java的历史、特性以及为...

    [网盘]java程序员由菜鸟到笨鸟.pdf

    ### Java程序员成长之路——从菜鸟到笨鸟 #### 一、引言 《Java程序员由菜鸟到笨鸟》是一本由曹胜欢编写的书籍,旨在帮助初学者掌握Java编程的基础知识,并逐步进阶至更高级的应用场景。本书不仅适合初学者作为...

    java菜鸟教程

    Java是一种广泛使用的面向对象的高级编程语言,它是由Sun Microsystems公司在1995年推出的。Java的设计初衷是实现一种可以在各种不同设备和平台上运行的编程语言。为了达到这个目标,Java被设计为具有良好的跨平台...

    excel数组公式.rar

    Excel数组公式是Excel功能强大的工具,它允许用户在单个公式中处理一组或多组数据,而不仅仅是单个单元格。这种技术可以极大地提高数据分析、计算和处理的效率,尤其适用于处理大量复杂的数据集。本资料“菜鸟级数组...

    Java菜鸟专用很好

    "Java菜鸟专用很好"这个标题暗示了Java是适合初学者入门的语言,而描述中的“菜鸟一用就会”进一步强调了其易于理解和学习的特性。 Java语言的发展历史始于1991年,由James Gosling领导的Green小组为数字家电开发了...

    java菜鸟文件.........

    以下是一些关于"java菜鸟文件"中的核心知识点,这些都是Java初学者应该掌握的基础概念和原则: 1. **Java语言特性**:Java是一种面向对象的编程语言,它具有平台独立性(通过JVM运行)、自动内存管理(垃圾回收机制...

    VB数组性能比较测试

    看到很多人热衷于讨论什么“VB模拟指针”之类的技术,似乎很高深,其实这东西它只是基于一个很简单的原理:在内存中多维数组和单维数组的排列是一样的,但是多维数组在寻址的时候(也就是调用某个数组元素的时候)需要...

    第6章 数组.docx-菜鸟入门(清晰版)】

    在C语言中,数组是一种非常重要的数据结构,它允许程序员一次性处理多个相同类型的数据。数组是一组具有相同数据类型的元素的有序集合,这些元素通过数组名和下标来标识和访问。数组的引入解决了在编程时无法预知...

    excel数组入门与精通

    9. **实践与案例**:"数组公式入门与精通.rar"、"菜鸟级excel数组公式入门教程.rar"、"数组公式经典教程.rar"等文件提供了丰富的实例和详细教程,通过实际操作来巩固理论知识。 10. **进阶技巧**:除了基础用法,还...

Global site tag (gtag.js) - Google Analytics