美文网首页Java学习笔记
若有必要 使用变长数组

若有必要 使用变长数组

作者: Viking_Den | 来源:发表于2016-10-07 20:20 被阅读9次

**一、分析 **
Java中的数组是定长的,一旦经过初始化声明就不可改变长度,这在实际使用中非常不方便。

**二、场景 **
比如要对班级学生的信息进行统计,因为我们不知道一个班级会有多少学生(随时都有可能会有学生入学、退学或转学),所以需要一个足够大的数组来容纳所有的学生。

但是多大才算足够大呢?随着环境的变化,“足够大”也可能会编程“足够小”,然后就会超出数组的最大容量的情况,那该如何解决呢?

事实上,可以通过对数组扩容“婉转”地解决问题,代码如下:

public static <T> T[] expandCapacity(T[] datas,int newLen){   
    //不能是负值   
    newLen = newLen < 0 ? 0 :newLen;   
    //生成一个新数组,并拷贝原地址   
    return Arrays.copyOf(datas,newLen);   
}   

上述代码中采用的是Arrays数组工具类的copyOf方法,产生了一个newLen长度的新数组,并把原来的值拷贝了进去,之后就可以对超长的元素进行赋值了。

使用方法如下:

public static void main(String[] args){   
    //一个班最多有容量60个学生   
    Stu[] classes = new Stu[60];   
    /*Classes初始化........*/   
   
    //偶尔一个班级可以容纳80人,数组加长   
    classes = expandCapacity(classes,80);   
    /*重新初始化超过限额的20人*/   
}   

通过这样的方式处理,曲折的解决了数组的变长问题。

**三、建议 **
在实际开发过程中,如果确实需要变长的数据集,数组也是在考虑范围之内的,不能因固定长度而将其否定之。其实,集合的长度维护功能的原理与此类似。

相关文章

  • 若有必要 使用变长数组

    **一、分析 **Java中的数组是定长的,一旦经过初始化声明就不可改变长度,这在实际使用中非常不方便。 **二、...

  • Scala学习第七节:定长与变长Array

    定长数组 变长数组 变长数组 需要导入scala.collection.mutable.ArrayBuffer

  • 《快学Scala》——数组、映射和元组

    数组 定长数组:在Scala中可以用Array,初始化一个定长数组。例如: 变长数组(数组缓冲):Scala中使用...

  • Scala基础——数组

    定长数组 数组一般包括定长数组和变长数组,在Scala中使用Array进行声明定长数组注意:scalad的索引标示...

  • scala之Array和ArrayBuffer

    定长数组 定义数组 方式一 方式二 变长数组 定义变长数组 类似于java的ArrayList,每append一...

  • Vector & Collections.synchro

    Vector简单使用 Vector也是一个类似于ArrayList的可变长度的数组类型,它的内部也是使用数组来存放...

  • golang切片

    定义 slice 并不是数组或数组指针。它通过内部指针和相关属性引用数组片段,以实现变长方案。 使用方式 切片:切...

  • 自学iOS第七天 11.17

    关于变长数组 变长数组 数组在进行初始化时,如果省略了数组的长度,则由编译器自行决定int a[] = {1, 2...

  • scala 变长数组

    变长数组的创建先调包再创建 数组变换

  • php新特性

    php5.6新特性 参考 使用表达式定义常量,使用const定义常量数组 使用 ... 运算符定义变长参数函数 使...

网友评论

    本文标题:若有必要 使用变长数组

    本文链接:https://www.haomeiwen.com/subject/rnnyyttx.html