二、场景
比如要对班级学生的信息进行统计,因为我们不知道一个班级会有多少学生(随时都有可能会有学生入学、退学或转学),所以需要一个足够大的数组来容纳所有的学生。
但是多大才算足够大呢?随着环境的变化,“足够大”也可能会编程“足够小”,然后就会超出数组的最大容量的情况,那该如何解决呢?
事实上,可以通过对数组扩容“婉转”地解决问题,代码如下:
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代码实现。比较容易复制和学习。
数组作为方法的形参 目录 课程导入 进一步熟悉方法的定义 学会编写方法,初始化数组 学会编写方法,输出数组元素 目录 课程导入 学会编写方法,求数组元素平均值 学会编写方法,实现数组元素逆序存储 理解数组作为...
JAVA【第4章:数组与方法】_数组的定义及使用
java代码-使用java增强for循环 string数组赋值的源代码 ——学习参考资料:仅用于个人学习使用!
java螺旋数组源码java螺旋数组源码java螺旋数组源码
树状数组3.java 使用java实现树状数组3.java 使用java实现树状数组3.java 使用java实现树状数组3.java 使用java实现树状数组3.java 使用java实现树状数组3.java 使用java实现树状数组3.java 使用java实现树状数组3....
Java可变长数组概述.pdf
Educoder题目:Java入门 - 数组基础答案解析
主要介绍了Java数组传递及可变参数操作,结合实例形式详细分析了java数组参数传递与可变参数相关使用技巧,需要的朋友可以参考下
数组作为方法返回值类型 学习目标 1 理解方法返回值类型是数组 引用类型的方法签名; 2 理解并学会数组作为方法返 回值类型的方法编写; 3 理解并熟知数组作为返回值 类型的方法调用。 方法的返回值类型 方法的...
java代码-使用java解决输出数组中加起来最大两个元素的值的源代码 ——学习参考资料:仅用于个人学习使用!
AtomicLongArray:原子更新长整型数组里的元素。 AtomicReferenceArray:原子更新引用类型数组里的元素。 以上3个类提供的方法几乎一模一样,以 AtomicIntegerArray 类为例,它主要是提供原子的方式更新数组里的...
java代码-使用java解决从字符串中解析二维数组的源代码 ——学习参考资料:仅用于个人学习使用!
java代码-使用java解决回文二维数组的源代码 ——学习参考资料:仅用于个人学习使用!
java【第4章:数组与方法】_数组的引用传递.
java实现数组,java开发实战经典,李新华,继承的应用
java开发学习,数组测试,这是java初学者可以使用的java数组范例,简洁明了,很容易学习
Java数组相关的例子代码 Java数组相关的例子代码
Educoder题目:Java入门 - 数组进阶答案解析
Java第5章 数组 含源代码 Java第5章 数组 含源代码 Java第5章 数组 含源代码 Java第5章 数组 含源代码 Java第5章 数组 含源代码