Java中数组的扩容
来源:互联网 发布:微博刷转发软件 编辑:程序博客网 时间:2024/05/16 11:53
在写程序的过程中,我们常常会碰见数组空间不够用的情况,比如我已经初始化了一个数组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 = new Scanner(System.in);//System.out.println("请输入一个数字");//int num = s.nextInt();//这个数组下标只能到9int []a = {1,2,3,4,5,6,7,8,9,10};//先扩容int []b = Getarray(a,3,100);Demoe.PrintArray(b);}//案例:有一个数组已经初始化完毕,现向其下标3插入一个元素100public static int[] Getarray(int []a , int index , int num){int src_array_length = a.length ; int []b = new int[src_array_length+1] ;for(int i = 0 ; i < a.length ; i++){b[i] = a[i] ; }a = b ; //如果还想使用a,使得a指向b//接下来从最后一个元素开始,将最后一个元素的前面一个元素拷贝到最后一个//以此类推for(int i = a.length - 1 ; i > index ; i--){a[i] = a[i-1];}//别忘了,将要插入的元素插入到对应的数组坐标a[index] = num ;return a ;}}也可以使用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位置插入一个元素valuepublic 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 ;}}
0 0
- Java中数组的扩容
- Java数组的扩容
- Java数组的扩容
- 关于java数组的扩容问题
- java数组自动扩容的方法。
- java 数组扩容
- java 数组扩容
- java数组与容器之间的转换,实现数组扩容
- java数组与容器之间的转换,实现数组扩容
- 数组的扩容
- 数组的扩容
- Java数组扩容算法及Java对它的应用
- Java数组扩容算法及Java对它的应用
- java入门第八天 数组的复制扩容(截取)
- java基础复习七:数组的声明与扩容
- 数组的自动扩容问题
- Java HashMap的扩容
- Java和Android中ArrayList与Vector的扩容比较
- [林轩田]13-过拟合的危害
- 用Android自带的DrawerLayout和ActionBarDrawerToggle实现侧滑效果
- RedHat6.3(linux)编译Qt4.8.6中文不显示的解决方法
- struts2异常处理,global-results定义全局结果处理
- imag.js|教你如何智做原生APP
- Java中数组的扩容
- C++ “error LNK1169: 找到一个或多个多重定义的符号” 解决方法
- 第十六条:复合优先于继承
- 美丽的图片
- NDS(导航数据标准)简介
- 摇杆代码(委托+事件)
- Python中__init__方法注意点
- LNMP安装了哪些软件?安装目录在哪?
- Openwrt使用mtd和sysupgrade刷机、备份恢复系统配置