Java数组动态增加容量

Java数组初始化需要指定数组容量,但是在许多情况下需要动态扩充容量。有两种方法可以实现:1.采用ArrayList类数组,它可以在需要时自动扩容;2.采用System.arraycopy方法实现,其声明为:araycopy(Object src,int srcPos,Object dest,int destPos, int length)  写个代码就可明白了,示例如下:

import java.util.*;
class Test
{
    public static void main(String[] args)
    {
        int incre=2; //容量增加量
        int[] a={1,2,3,4};
        int[] b=new int[a.length+incre];//新数组
        System.arraycopy(a, 0, b, 0, a.length);//将a数组内容复制新数组b
        b[4]=5;//b数组新增元素
        b[5]=6;
        a=b;//改变引用
        System.out.println("扩容后数组a容量为为:"+a.length+"  数组a内容:");
        for(int i:a)
            System.out.print(i+"  ");
    }    

}

代码并没有真正增加原数组a的容量,只是将a内容复制到新的大数组,然后让a重新引用大数组。由于Java数组存贮在堆中,原a数组无需释放,会被自动回收。

原文地址:https://www.cnblogs.com/manmanchanglu/p/11588416.html

时间: 2024-08-11 12:24:25

Java数组动态增加容量的相关文章

java数组:去重,增加,删除元素

import java.util.List; import java.util.ArrayList; import java.util.Set; import java.util.HashSet; public class Code { public static void main(String [] args) { testA(); System.out.println("==========================="); testB(); System.out.prin

Java 基于数组自定义实现容量不可变向量Vector

背景:假定集合 S 由 n 个元素组成,它们按照线性次序存放,于是我们就可以直接访问其中的第一个元素.第二个元素.第三个元素--.也就是说,通过[0, n-1]之间的每一个整数,都可以直接访问到唯一的元素 e,而这个整数就等于 S 中位于 e 之前的元素个数??在此,我们称之为该元素的秩( Rank).不难看出,若元素 e 的秩为 r,则只要 e 的直接前驱(或直接后继)存在,其秩就是 r-1(或 r+1).这一定义与 Java. C++之类的程序语言中关于数组元素的编号规则是一致的.支持通过秩

[java笔记]动态数组

private int count;//计数器 private int ary[] = new int [3]; if(count >= ary.length){ //数组动态扩展 int newlen = (ary.length*3)/2 + 1; underwears = Arrays.copyOf(ary, newlen); } count++;

[转载]Java数组扩容算法及Java对它的应用

原文链接:http://www.cnblogs.com/gw811/archive/2012/10/07/2714252.html Java数组扩容的原理 1)Java数组对象的大小是固定不变的,数组对象是不可扩容的. 2)利用数组复制方法可以变通的实现数组扩容. 3)System.arraycopy()可以复制数组. 4)Arrays.copyOf()可以简便的创建数组副本. 5)创建数组副本的同时将数组长度增加就变通的实现了数组的扩容.  源码展示: 1 public class Array

Java千问:七个问题帮助初学者深入理解Java数组

几乎所有的高级语言当中,都提供了一种叫做"数组"的东西,Java语言当然也不例外.我们通过数组可以很方便的存储和管理一组数据.因为在Java语言当中使用数组非常的方便,所以导致很多初学者忽略了对数组的深入学习,本文就通过七个问题,来帮助初学者深入理解一下Java语言的数组到底是怎么回事. 一.数组是变量的简单叠加吗? 我们在学习Java的时候,知道一个int类型的变量可以存储一个整数,而一个int类想的数组可以存储多个整数.于是很多人认为数组只不过是变量的简单叠加而已,无非是变量存1个

Java数组与内存控制

一.Java数组初始化 Java数组是静态的,即当数组被初始化之后,该数组的长度是不可变的.Java数组使用之前必须先对数组对象进行初始化,所谓初始化,就是为数组的所有元素分配内存空间,并为每个数组元素指定初始值.(文章来源于李刚老师的<突破java程序员的16课>) 1:基本类型数组的两种初始化方式 静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度. 动态初始化:初始化时程序员只指定数组长度,由系统为数组元素分配初始值. 不要同时使用静态初始化和动态初始化,也就是

java的动态代理机制详解

在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于 Spring的核心AOP来说,我们不但要知道怎么通过AOP来满足的我们的功能,我们更需要学习的是其底层是怎么样的一个原理,而AOP的原理就是 java的动态代理机制,所以本篇随笔就是对java的动态机制进行一个回顾. 在java的动态代理机制中,有两个重要的类或接口,一个是 InvocationHandler(Interface).另一个则是 Proxy(Cla

java数组和Array类

java数组英文:Arrays 存储相同数值的集合的数据结构 An array is a data structure that stores a collection of values of the same type. You accesseach individual value through an integer index. For example, if a is an array of integers, thena[i] is the ith integer in the a

2015.3.7小练习(动态增加元素及表格,以及浏览器兼容问题)

最近在对之前理解的HTML/CSS/javaScript查漏补缺,真是学会了Jquery马上就开始反感用javascript写很多jquery一下子就可以实现的选择和操作. 今天是做了一个根本无界面美观性可言的实验part,乱七八糟大乱炖,只为练习功能. 动态增加元素 function addBtn() { var textField = document.getElementById("main"); var input = document.createElement("