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 ;
  }
} 

运行结果:

[1, 2, 3, 100, 4, 5]

总结

以上就是本文关于Java数组扩容实例代码的全部内容,希望对大家有所帮助。如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

(0)

相关推荐

  • 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数组扩容实例代码

    在写程序的过程中,我们常常会碰见数组空间不够用的情况,比如我已经初始化了一个数组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数组扩容实现方法解析

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

  • 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的反射机制. 反射

随机推荐