提高你的Java代码质量吧:如果有必要,使用变长数组吧
一、分析
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人*/
}
通过这样的方式处理,曲折的解决了数组的变长问题。
三、建议
在实际开发过程中,如果确实需要变长的数据集,数组也是在考虑范围之内的,不能因固定长度而将其否定之。其实,集合的长度维护功能的原理与此类似。
转载于:https://www.cnblogs.com/pangblog/p/3249359.html
提高你的Java代码质量吧:如果有必要,使用变长数组吧相关推荐
- java代码编写出现的陷阱-1:警惕变长参数
在Java5 中提供了变长参数(varargs),也就是在方法定义中可以使用个数不确定的参数,对于同一方法可以使用不同个数的参数调用,调用的时候可以给出任意多个参数也可不给参数. 如method(Ob ...
- 提高你的Java代码质量吧:推荐在复杂字符串操作中使用正则表达式
一.分析 字符串的操作,诸如追加.合并.替换.倒序.分隔等,都是在编码过程中经常用到的,而且Java也提供了append.replace.reverse.split等方法来完成这些操作,它们使用起来 ...
- 提高你的Java代码质量吧:少用静态导入
一.分析 从Java 5开始引入静态导入语法(import static),其目的是为了减少字符输入量,提高代码的可阅读性,以便更好地理解程序. 但是,滥用静态导入会使程序更难阅读,更难维护.静态导 ...
- 提高你的Java代码质量吧:使用valueof前必须进行校验
一.分析 每个枚举都是java.lang.Enum的子类,都可以访问Enum类提供的方法,比如hashCode.name.valueOf等,其中valueOf方法会把一个String类型的名称转变成枚 ...
- 提高你的Java代码质量吧:不要随便设置随机种子
一.分析 在加密.混淆数据等地方,我们经常期望获得一个唯一的.不可仿造的数字,以避免产生相同的业务数据造成混乱. 在Java项目中,通常是通过Math.random方法和Random类类获得随机数的. ...
- 提高你的Java代码质量吧:不要让类型默默转换
一.分析 在Java运算中的类型转换,是先运算在进行类型转换的.具体场景如下. 二.场景 在如下程序中: public class Client{ public static final int ...
- 提高你的Java代码质量吧:让我们疑惑的字符串拼接方式的选择
一.分析 对于一个字符串进行拼接有三种方法:加号.concat方法.及StringBuiler或StringBuffer. 1."+"方法拼接字符串 str += " ...
- 提高 Java 代码质量
高质量代码中往往缺陷更少!确保高的 Java 代码质量有两个步骤:尽早并经常地编写各个层次的测试用例,以及持续的监测质量状况.那么我们又该如何实践呢?本专题汇集了大量来自代码质量专家们的专业经验.最佳 ...
- java 代码解析工具_改善 Java 代码质量的工具与方法
原标题:改善 Java 代码质量的工具与方法 我们可能见过上面的有关代码质量的图片,究竟如何衡量一段代码好坏? 代码质量是什么?为什么它很重要? 作家通过他的著作来讲述了一个清晰的.令人信服的故事.他 ...
最新文章
- 小米2s屏幕_米家空气净化器3VS小米空气净化器2 成熟设计的优势
- 干货:五分钟带你看懂NestedScrolling嵌套滑动机制
- oracle 添加字段
- 带你玩转Logview: MaxCompute Logview参数详解和问题排查
- sqlserver可视化工具_数据分析之基础分析工具篇(修订版)
- OGG ORA-1403 NO DATA FOUND
- HTML5 画布变换
- android php 推送,php-Android通过Firebase推送通知(服务器端)
- android 11 版本更新内容,android 11怎么更新 android 11更新方法
- 渗透常用SQL注入语句合集
- 电工电子技术知识点总结(基本放大电路)
- Python转义符的使用
- html和css中盒子大小,CSS大小设置实例——盒子模型
- LINUX入门——Linux是什么?
- java muti实现图片上传_MutiFileUpload.java 多文件上传
- 生活随记 - 国庆假期怎么过才有意义呢
- 决策引擎服务平台blaze_是Blaze数据服务还是LiveCycle数据服务?
- 安卓游戏服务器文件是哪个文件夹,安卓手机游戏数据包放在哪个文件夹
- 13 MCMC(Markov Chain Monte Carlo)
- Vue install 报错 code EINTEGRITY