[改善Java代码]若有必要,使用变长数组
2016-04-22 18:24
330 查看
Java中的数组是定长的,一旦经过初始化声明就不可改变长度,这在实际使用的时候非常不方便.比如要对一个班级的学生信息进行统计,因为我们不知道班级会有多少个学生(随时可能有退学,入学,转学),所以需要一个足够大的数组来容纳所有的学生.可以通过对数组扩容解决该问题.
代码如下:
上述代码中采用的是Arrays数组工具类的copyOf方法,产生了一个newLen长度的新数组,并把原有的值拷贝了进去,之后就可对超长的元素进行赋值了(依据类型的不同分别赋值为0,false或null)使用方法如下:
通过这样的方式,曲折的解决了数组的变长问题,其实集合的长度自动维护功能的原理与此类似,在实际开发中,如果确实需要变长的数据集,数组也是在考虑范围之内的.不能因为其固定长度而否定之.
代码如下:
//加长数组 public static <T> T[] expandCapacity(T[] datas, int newLen) { // 不能是是负值 newLen = newLen<0?0:newLen; // 生成一个新数组,并拷贝原值 return Arrays.copyOf(datas, newLen); }
上述代码中采用的是Arrays数组工具类的copyOf方法,产生了一个newLen长度的新数组,并把原有的值拷贝了进去,之后就可对超长的元素进行赋值了(依据类型的不同分别赋值为0,false或null)使用方法如下:
public static void main(String[] args) { //一个班级最多容量60个学生 Stu[] classes = new Stu[60]; /*classes初始化 ……*/ //偶尔一个班级可以容纳80人,数组加长 classes = expandCapacity(classes,80); /*重新初始化超过限额的20人……*/ }
通过这样的方式,曲折的解决了数组的变长问题,其实集合的长度自动维护功能的原理与此类似,在实际开发中,如果确实需要变长的数据集,数组也是在考虑范围之内的.不能因为其固定长度而否定之.
相关文章推荐
- HDU2054JAVA
- wget下载jdk
- 一、SpringMVC基础入门,创建一个HelloWorld程序
- 二分查找
- 解决MyEclipse10.7吃内存以及卡死的方法
- java中定义一个CloneUtil 工具类
- Map扩展一对多的使用
- eclipse android logcat 只显示自己应用程序信息的设置方法
- Java并发之volatile二
- Java 优先级的问题
- Spring MVC上传图片的方法
- 20145324 Java实验三
- JAVA的Condition详解
- java基础(13)-- Java IO
- ubuntu 14.04 install java8
- Java Arrays类进行数组排序
- MyEclipse 常用优化设置
- Java Access Levels(访问控制)
- Java 枚举类
- Java 集合类