Java数组的扩容代码示例
作者:Engineer-MrYang 时间:2021-10-10 00:04:21
本文研究的主要是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 = new Scanner(System.in);
//System.out.println("请输入一个数字");
//int num = s.nextInt();
//这个数组下标只能到9
int []a = {1,2,3,4,5,6,7,8,9,10};
//先扩容
int []b = Getarray(a,3,100);
Demoe.PrintArray(b);
}
//案例:有一个数组已经初始化完毕,现向其下标3插入一个元素100
public 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位置插入一个元素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 ;
}
}
来源:http://blog.csdn.net/morixinguan/article/details/52232755
标签:java,数组扩容
0
投稿
猜你喜欢
Java实现简单的分页功能
2021-06-02 01:32:48
JDK源码中一些实用的“小技巧”总结
2022-10-21 08:17:50
Java后端Cookie实现(时间戳)代码实例
2022-05-17 09:39:52
一篇文章带你深入了解Java类加载
2023-06-11 22:12:00
Java ArrayList深入源码层分析
2021-10-18 04:12:31
Java关键字finally_动力节点Java学院整理
2022-09-25 11:15:30
Java8 Optional优雅空值判断的示例代码
2021-09-20 09:16:26
spring异步service中处理线程数限制详解
2021-09-02 23:20:12
java必学必会之this关键字
2021-11-16 09:47:12
使用Java Minio搭建自己的文件系统详解
2023-05-20 05:15:01
Java C++题解leetcode字符串轮转KMP算法详解
2023-05-30 11:28:49
Java中用POI实现将数据导出到Excel
2022-09-22 00:06:09
Android手势密码实现实例代码
2023-04-13 20:17:51
全面详解Spring Bean生命周期教程示例
2023-08-09 11:41:15
如何把VS Code打造成Java开发IDE
2021-09-16 16:37:36
通过代码快速理解Java的三种代理模式
2023-03-28 01:13:57
Android日期时间格式国际化的实现代码
2023-08-28 04:44:42
SpringMVC form标签引入及使用方法
2023-02-16 17:58:41
Android 全局Dialog的简单实现方法
2021-06-28 10:14:40
Java反射机制详解
2023-10-01 12:18:04