今天就跟大家聊聊有关如何在java中对数组进行扩容,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
1.扩容的原理
(1)Java数组对象的大小是固定不变的,数组对象是不可扩容的。
(2)利用数组复制方法可以变通的实现数组扩容。
(3)System.arraycopy()可以复制数组。
(4)Arrays.copyOf()可以简便的创建数组副本。
(5)创建数组副本的同时将数组长度增加就变通的实现了数组的扩容。
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中对数组进行扩容有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。