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
  • asp之家 软件编程 m.aspxhome.com