java数组的三种扩容方式以及程序实现

简介: java数组的三种扩容方式以及程序实现

因为数组是在内存中连续的一段存储空间,所以数组一旦被创建,空间就固定了,长度是不能扩增的。

数组的长度是固定的,如果需要扩充**,必须创建新数组,原数组的长度要复制到新数组中 。**

java中,数组类型的变量传值的时候,事实上传递的是数组的地址

数组扩容的三种方式:

  1. 新建一个数组,把原来数组的内容搬到 新数组中。
  2. 用系统定义函数system.arraycopy实现扩容;
  3. 用系统定义函数copyof函数实现扩容;

下面用程序来实现这三种扩容

class expand2{
  //利用函数的方法进行数组的扩充
  public static void main(String[] args) {
    //定义一个小型的数组
    int[] a={1,2,3,5};
    //调用扩容函数
    //a=expand2(a);
    //a=expand3(a);
    a=expand4(a);
    //测试是否扩容完成,输出此时数组a中的值
    for (int i=0;i<a.length;i++) {
      System.out.println("aaaa:"+a[i]);
    }
  }
  //扩容函数,
  public static int[] expand2(int a[]){
    //定义一个新数组b,并为其赋值长度为数组a的二倍
    int b[] = new int[a.length*2];
    //将数组a的元素循环遍历到数组b中
    for (int i=0;i<a.length;i++) {
      b[i] = a[i];
    }
    //返回扩容后的数组b
    return b;
  }
  //数组扩容方法3,利用系统函数arraycopy进行扩容
  public static int[] expand3(int a[]){
    int[] b = new int[a.length*2];
    //系统函数进行扩容,将a[]的值赋值到b[]中,共a.length个长度。
    //相当于第19-21行
    System.arraycopy(a,0,b,0,a.length);
    return b;
  }
  //数组扩容方法4,利用系统函数copy进行扩容
  public static int[] expand4(int a[]){
    //可以查看api文档,java.util.Arrays.copyOf的详细使用;
    return java.util.Arrays.copyOf(a,a.length*2);
  }
}


目录
相关文章
|
1月前
|
Java
java程序导出堆文件
java程序导出堆文件
|
1月前
|
SQL Oracle Java
sql文件批处理程序-java桌面应用
sql文件批处理程序-java桌面应用
25 0
|
4天前
|
存储 Java 程序员
Java 数组
4月更文挑战第16天
|
13天前
|
Java Maven
【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“
【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“
34 3
|
1天前
|
Java
网页运行java程序cheerpj
网页运行java程序cheerpj
25 0
|
25天前
|
存储 安全 Java
Java线程池ThreadPoolExcutor源码解读详解04-阻塞队列之PriorityBlockingQueue原理及扩容机制详解
1. **继承实现图关系**: - `PriorityBlockingQueue`实现了`BlockingQueue`接口,提供了线程安全的队列操作。 - 内部基于优先级堆(小顶堆或大顶堆)的数据结构实现,可以保证元素按照优先级顺序出队。 2. **底层数据存储结构**: - 默认容量是11,存储数据的数组会在需要时动态扩容。 - 数组长度总是2的幂,以满足堆的性质。 3. **构造器**: - 无参构造器创建一个默认容量的队列,元素需要实现`Comparable`接口。 - 指定容量构造器允许设置初始容量,但不指定排序规则。 - 可指定容量和比较
42 2
|
26天前
|
Java
java 8 数组转字符串并以逗号分隔
java 8 数组转字符串并以逗号分隔
11 0
|
28天前
|
Java
elasticsearch使用java程序添加删除修改
elasticsearch使用java程序添加删除修改
9 0
|
1月前
|
Java
【Java】数组中的拷贝方法与初步理解深浅拷贝
【Java】数组中的拷贝方法与初步理解深浅拷贝
12 0