Java实现长度可变数组

1、数组:数组是一种数据结构,用来储存同一种类型值得集合,数组一旦被创建就不能改变它的大小。

2、既然数组的长度是不可改变的,那么怎么实现长度可变呢?

思路:既然数组长度不可变,那么我们可以创建一个长度与原数组不同的新数组,让原数组变量指向新数组,从而实现长度可变(新数组如果没有使用,那么就会被java垃圾回收机制回收销毁,从而不浪费内存空间。)

a)直接创建新数组,让原数组变量指向新数组。

import java.util.Arrays;  

/**
 * 这是我们用来测试的类
 *
 * @author 404NOTFound
 */
public class Demo {
    public static void main(String[] args) {
        int[] src = new int[0];
        int[] dest = new int[3];
        src = dest;
        src[0] = 1;
        src[1] = 2;
        src[2] = 3;
        System.out.println(Arrays.toString(src));
    }
} 

输出结果:

b)使用Arrays类或者System类的静态方法:Arrays.copyOf(),System.arraycopy(),传入长度比原数组长度不同的参数就会拷贝创建一个长度不同的数组。

代码如下:

import java.util.Arrays;
public class Demo {
    public static void main(String[] args) {
        int[] src = new int[0];
        src = Arrays.copyOf(src, 1);
        src[src.length - 1] = 1;
        System.out.println(Arrays.toString(src));
    }
}  

c)使用ArrayList代替数组,通过泛型ArrayList可以储存不同类型的对象。

代码如下:

import java.util.ArrayList;
import java.util.Arrays;  

public class Demo {
    public static void main(String[] args) {
        ArrayList<Integer> al = new ArrayList<>();
        al.add(1);
        al.add(2);
        System.out.println("输出长度:"+al.size());
        al.add(3);
        System.out.println("输出长度:"+al.size());
    }
}  

输出结果:

d)使用Vector,Vector存储同类对象

代码如下:

package test;    

import java.util.Vector;    

public class Test01 {
    public static void main(String[] args) {
        Vector vet = new Vector();
        String str="test1";
        double t1=0.124;
        vet.add(str);
        vet.add(String.valueOf(t1));
        System.out.println("获取大小:"+vet.size());
        System.out.println(vet.get(0));    

    }    

}    

输出结果:

原文地址:https://www.cnblogs.com/404NOTFoundNEO/p/9065072.html

时间: 2024-10-08 12:27:01

Java实现长度可变数组的相关文章

如何自定义一个长度可变数组

摘要:本文主要写了如何自定义一个长度可变数组 数组是在程序设计中,为了处理方便,把具有相同类型的若干元素按无序的形式组织起来的一种形式 在定义之初,数组的长度就被定义 新建数组有很多方式 下面两个都可以 但一般书写习惯会选择第一种 1 String[] array = new String[5]; //新建一个长度为5的字符串数组 1 String array[] = new String[5]; // 新建一个长度为5的字符串数组 由于数组的长度一旦初始化就无法改变,所以我们需要另辟思路 假如

C语言struct中的长度可变数组(Flexible array member)

C_struct中的长度可变数组(Flexible array member) Flexible array member is a feature introduced in the C99 standard of the C programming language (in particular, in section §6.7.2.1, item 16, page 103). It is a member of a struct, which is an array without a g

Effective Java 之-----返回零长度的数组或集合而不是null

如下代码,通常用户列表为空时,会习惯性返回null,因为这时会认为:null返回值比零长度数组更好,因为它避免了分配数组所需要的开销. private final List<UserBean> UserList = null; public List<UserBean> getUserBean(){ if(UserList.size() == 0){ return null; }else{ return UserList; } } 但这种观点是站不住脚的,原因如下: 1) 在这个级

什么情况下使用break关键字? 什么情况下使用Continue关键字? Java如何声明一个数组?JS如何声明一个数组?如何获取数组长度? 如何遍历数组?

什么情况下使用break关键字?什么情况下使用Continue关键字? Break Break关键用于终止循环. 示例: 1 2 3 4 5 6 for (int i = 0; i < 10; i++) {   if (i == 4) {     break; //终止循环,后面的循环不再执行   }   System.out.println(i); } Continue Continue关键字用于终止本次循环,其它循环继续. 示例: 1 2 3 4 5 6 7 for (int i = 0;

返回零长度的数组或者集合,而不是null——Effective Java 读书笔记

/** * 返回零长度的数组或者集合,而不是null * * @author 刘向峰 * */ public class Shop { private List<Object> objectList; // 零长度数组常量被传递给toArray方法,以指明所期望的返回类型 private final static Object[] EMPTY_OBJECT_ARRAY = new Object[0]; public Shop(List<Object> objectList) { s

[Java基础笔记]数组

Java基础笔记 定义数组: int[] numbers = new int[100]; //方法一 double[] num = new double[10]; int[][] a = new int[2][5]; 通过new创建的数组,元素默认值为0(0.0) int[] scores = {5,4,33,12,46}; //方法二 int[][] a = { //位数不足,自动补0 {5,3,2,1,6}, {10,12,14,15}, }; 数组特性:存储的都是同类型数据:长度定义后不可

重踏学习Java路上_Day15(对象数组,集合类,列表)

1:对象数组(掌握)    (1)数组既可以存储基本数据类型,也可以存储引用类型.它存储引用类型的时候的数组就叫对象数组.    (2)案例:        用数组存储5个学生对象,并遍历数组. public class Student {    // 成员变量    private String name;    private int age; // 构造方法    public Student() {        super();    } public Student(String n

JavaSE入门学习9:Java基础语法之数组

一数组的定义 数组可以理解为是一个巨大的"盒子",里面可以按顺序存放多个类型相同的数据,比如可以定义int型的数组 scores存储4名学生的成绩. 数组中的元素都可以通过下标来访问,下标从0开始.例如,可以通过scores[0]获取数组中的第一个元素76, scores[2]就可以取到第三个元素92. 二操作数组只需要四个步骤: 1声明数组 语法:数据类型[ ] 数组名:或者 数据类型 数组名[ ]: 其中,数组名可以是任意合法的变量名,如: 2分配空间 简单地说,就是指定数组中最多

Objective-C 数组与可变数组

知识点 1.NSArray 类的重点函数使用 2.NSMutableArray 类的重点函数使用 3.字符串的分割和拼接 ============================ NSArray,    NSMutableArray 1.[需要理解的知识] 1.1 C语言中数组 1. 相同数据类型的集合: int a[10]; float b[20]; char c[30]; 2. 数组地址是连续; 1.OC数组和c数组的区别 1.NSArray是个类 数组是对象: 存储也是对象: 2.数组不能