数组在java中的扩容的实例方法

在使用数组的时候,因为大小的限制,难免会出现不够用的现象。直接给数据对象扩容是不可行的,这时候就需要我们找寻一些其他的方法。本篇先为大家简单分析扩容的原理,然后创建一个数组供大家使用,最后提供两种数组扩容方法:for循环Arrays,下面一起来看具体的操作。

1.扩容的原理

(1)Java数组对象的大小是固定不变的,数组对象是不可扩容的。

(2)利用数组复制方法可以变通的实现数组扩容。

(3)System.arraycopy()可以复制数组。

(4)Arrays.copyOf()可以简便的创建数组副本。

(5)创建数组副本的同时将数组长度增加就变通的实现了数组的扩容。

2.先创建数组

import java.util.Arrays;
//数组的扩容示例
public class Test {
public static void main(String [] args){
//创建一个原始数组,并做好初始化。
// int [] arry = {1,3,5,7,9};
int arry[] =new int[]{1,3,5,7,9};
int arry1[]=new int[7];//新建一个新数组这里的7=arry.length+需要扩容的长度
System.out.println("打印原始数组的长度为:"+arry.length);
System.out.println("打印新数组的长度为:"+arry1.length);
//验证该数组有没有创建完成,可以获取一下数组元素看看能不能成功。
// System.out.println(arry[1]);
//把从旧数组中获取的数据一个一个的存到新的数组里面去,并新增两个数:11,13。
//如何把数据存到数组里面去,使用arry1[0]=1;
/*

3.方法一:循环遍历原始数组arry,长度是固定的,所以用for循环。

//1、先完成复制数组
for(int i=0;i<arry.length;i++){
arry1[i] = arry[i];
}
//2、再完成赋值插入操作,即已完成数组的扩容操作。
arry1[5]=11;
arry1[6]=13;
System.out.println("新数组为:"+arry1[5]);
System.out.println("新数组为:"+arry1[6]);
*/
/*

4.方法二:使用java的util包的Arrays类的copyOf(原数组名,新数组长度)方法来进行复制。

arry1 = Arrays.copyOf(arry,arry.length+2);
arry1[5] = 11;
arry1[6] = 13;
System.out.println("新数组为:"+arry1[5]);
System.out.println("新数组为:"+arry1[6]);

以上就是数组在java中的扩容方法,这两种方法相对新手而言,是非常容易实现扩容的。

相关实例扩展:

import java.util.Arrays;
public class HelloWorld {
	public static void main(String[] args){
	//	Scanner s = new Scanner(System.in);
	//	System.out.println("请输入一个数字");
	//	int num = s.nextInt();
	int []a = {1,2,3,4,5};
	int []b = new int[a.length] ;
		//1、源数组
		//2、源数组的哪个位置开始
		//3、目标数组
		//4、目标数组的哪个位置开始存放
		//5、拷贝几个
		//System.arraycopy(a, 0, b, 0, a.length);
		//Demoe.PrintArray(b);
		//扩容--->扩容了一倍
		//a = Arrays.copyOf(a, 2*a.length) ;
		//Demoe.PrintArray(a);
		a = insertArray(a , 3 , 100) ;
		//打印数组
		System.out.println(Arrays.toString(a));
	}
	//写一个函数,向整数数组的任意pos位置插入一个元素value
	public static int[] insertArray(int []a , int pos , int value){
		if(pos < 0 || pos > a.length + 1) //索引下标不对,直接返回源数组
			return a ;
		//放入一个元素,先扩容,后复制
		a = Arrays.copyOf(a, a.length+1) ;
		for(int i = a.length - 1 ; i > pos ; i--){
			a[i] = a[i-1] ; //后移动
		}
		a[pos] = value ;
		return a ;
	}
}

到此这篇关于数组在java中的扩容的实例方法的文章就介绍到这了,更多相关数组在java中的扩容方法浅析内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2021-01-26

Java数组扩容实现方法解析

这篇文章主要介绍了Java数组扩容实现方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 第一种 int[] arr2=new int[arr1.length*2] //新数组的长度 第二种 int[] arr2=java.util.Arrays.copyOf(原数组名,新数组的长度); 第三种 int[] arr2=new int[arr1.length*2] System.arraycopy(原数组名,起始下标,新数组名,起始下标,复制

Java使用数组实现ArrayList的动态扩容的方法

提到数组大家肯定不会陌生,但我们也知道数组有个缺点就是在创建时就确定了长度,之后就不能更改长度.所以Java官方向我们提供了ArrayList这个可变长的容器.其实ArrayList底层也是用数组进行实现的,今天我们就自己使用数组实现ArrayList的功能. 一.整体框架 废话不多说,我们以存放int类型元素为例,看一下ArrayList需要的成员变量和需要实现的方法. public class ArrayList private int size;//用来记录实际存储元素个数 private

java数组的三种扩容方式以及程序实现详解

因为数组是在内存中连续的一段存储空间,所以数组一旦被创建,空间就固定了,长度是不能扩增的. 数组的长度是固定的,如果需要扩充**,必须创建新数组,原数组的长度要复制到新数组中 .** java中,数组类型的变量传值的时候,事实上传递的是数组的地址 . Java数组扩容的原理 1)Java数组对象的大小是固定不变的,数组对象是不可扩容的. 2)利用数组复制方法可以变通的实现数组扩容. 3)System.arraycopy()可以复制数组. 4)Arrays.copyOf()可以简便的创建数组副本.

Java数组扩容实例代码

在写程序的过程中,我们常常会碰见数组空间不够用的情况,比如我已经初始化了一个数组int []a = {1,2,3,4,5,6,7,8,9,10} ;这时,我想往数组下标3的位置插入一个元素,该怎么做?用C语言实现太难了吧,需要调用memcpy函数要一个一个偏,但是在java中就不用那么麻烦了,有种叫数组的扩容方式,轻松实现.来看看代码: public class HelloWorld { public static void main(String[] args){ // Scanner s =

Java 数组差集实例代码

以下实例演示了如何使用 removeAll () 方法来计算两个数组的差集: Main.java 文件: import java.util.ArrayList; public class Main { public static void main(String[] args) { ArrayList objArray = new ArrayList(); ArrayList objArray2 = new ArrayList(); objArray2.add(0,"common1")

Java后缀数组之求sa数组的实例代码

后缀数组的一些基本概念请自行百度,简单来说后缀数组就是一个字符串所有后缀大小排序后的一个集合,然后我们根据后缀数组的一些性质就可以实现各种需求. public class MySuffixArrayTest { public char[] suffix;//原始字符串 public int n;//字符串长度 public int[] rank;// Suffix[i]在所有后缀中的排名 public int[] sa;// 满足Suffix[SA[1]] < Suffix[SA[2]] --

Java背包问题求解实例代码

背包问题主要是指一个给定容量的背包.若干具有一定价值和重量的物品,如何选择物品放入背包使物品的价值最大.其中又分01背包和无限背包,这里主要讨论01背包,即每个物品最多放一个.而无限背包可以转化为01背包. 先说一下算法的主要思想,利用动态规划来解决.每次遍历到的第i个物品,根据w[i]和v[i]来确定是否需要将该物品放入背包中.即对于给定的n个物品,设v[i].w[i]分别为第i个物品的价值和重量,C为背包的容量.再令v[i][j]表示在前i个物品中能够装入容量为j的背包中的最大价值.则我们有

Java回调函数实例代码详解

首先说说什么叫回调函数? 在WINDOWS中,程序员想让系统DLL调用自己编写的一个方法,于是利用DLL当中回调函数(CALLBACK)的接口来编写程序,使它调用,这个就 称为回调.在调用接口时,需要严格的按照定义的参数和方法调用,并且需要处理函数的异步,否则会导致程序的崩溃. 这样的解释似乎还是比较难懂,这里举个简 单的例子: 程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序.程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法.目的达到

java图片添加水印实例代码分享

本文为大家介绍了java图片添加水印实例代码,java实现水印还是非常方便的,水印可以是图片或者文字,具体内容如下 package michael.io.image; import java.awt.AlphaComposite; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.io

jQuery的ajax和遍历数组json实例代码

jQuery的ajax和遍历数组json实例代码 jQuery.ajax({ type: "POST", url: "server.json", dataType:'json', data: "", success: function(msg){ var title = ""; jQuery.each(msg,function(key,value){ alert(value.ec_id+" "+value.

详解json string转换为java bean及实例代码

详解json string转换为java bean及实例代码 pom中添加如下两个库: <dependency> <groupId>org.codehaus.jackson </groupId> <artifactId>jackson-core-asl</artifactId> <version>1.9.2</version> <scope>provided</scope> </depende

Java反射机制实例代码分享

本文旨在对Java反射机制有一个全面的介绍,希望通过本文,大家会对Java反射的相关内容有一个全面的了解. 阅读本文之前,大家可先行参阅<重新理解Java泛型>. 前言 Java反射机制是一个非常强大的功能,在很多大型项目比如Spring, Mybatis都可以看见反射的身影.通过反射机制我们可以在运行期间获取对象的类型信息,利用这一特性我们可以实现工厂模式和代理模式等设计模式,同时也可以解决Java泛型擦除等令人苦恼的问题.本文我们就从实际应用的角度出发,来应用一下Java的反射机制. 反射