一、分析 

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代码质量吧:如果有必要,使用变长数组吧相关推荐

  1. java代码编写出现的陷阱-1:警惕变长参数

    在Java5 中提供了变长参数(varargs),也就是在方法定义中可以使用个数不确定的参数,对于同一方法可以使用不同个数的参数调用,调用的时候可以给出任意多个参数也可不给参数. 如method(Ob ...

  2. 提高你的Java代码质量吧:推荐在复杂字符串操作中使用正则表达式

    一.分析  字符串的操作,诸如追加.合并.替换.倒序.分隔等,都是在编码过程中经常用到的,而且Java也提供了append.replace.reverse.split等方法来完成这些操作,它们使用起来 ...

  3. 提高你的Java代码质量吧:少用静态导入

    一.分析  从Java 5开始引入静态导入语法(import static),其目的是为了减少字符输入量,提高代码的可阅读性,以便更好地理解程序. 但是,滥用静态导入会使程序更难阅读,更难维护.静态导 ...

  4. 提高你的Java代码质量吧:使用valueof前必须进行校验

    一.分析 每个枚举都是java.lang.Enum的子类,都可以访问Enum类提供的方法,比如hashCode.name.valueOf等,其中valueOf方法会把一个String类型的名称转变成枚 ...

  5. 提高你的Java代码质量吧:不要随便设置随机种子

    一.分析 在加密.混淆数据等地方,我们经常期望获得一个唯一的.不可仿造的数字,以避免产生相同的业务数据造成混乱. 在Java项目中,通常是通过Math.random方法和Random类类获得随机数的. ...

  6. 提高你的Java代码质量吧:不要让类型默默转换

    一.分析  在Java运算中的类型转换,是先运算在进行类型转换的.具体场景如下. 二.场景  在如下程序中: public class Client{ public static final int ...

  7. 提高你的Java代码质量吧:让我们疑惑的字符串拼接方式的选择

    一.分析  对于一个字符串进行拼接有三种方法:加号.concat方法.及StringBuiler或StringBuffer. 1."+"方法拼接字符串  str += " ...

  8. 提高 Java 代码质量

    高质量代码中往往缺陷更少!确保高的 Java 代码质量有两个步骤:尽早并经常地编写各个层次的测试用例,以及持续的监测质量状况.那么我们又该如何实践呢?本专题汇集了大量来自代码质量专家们的专业经验.最佳 ...

  9. java 代码解析工具_改善 Java 代码质量的工具与方法

    原标题:改善 Java 代码质量的工具与方法 我们可能见过上面的有关代码质量的图片,究竟如何衡量一段代码好坏? 代码质量是什么?为什么它很重要? 作家通过他的著作来讲述了一个清晰的.令人信服的故事.他 ...

最新文章

  1. 小米2s屏幕_米家空气净化器3VS小米空气净化器2 成熟设计的优势
  2. 干货:五分钟带你看懂NestedScrolling嵌套滑动机制
  3. oracle 添加字段
  4. 带你玩转Logview: MaxCompute Logview参数详解和问题排查
  5. sqlserver可视化工具_数据分析之基础分析工具篇(修订版)
  6. OGG ORA-1403 NO DATA FOUND
  7. HTML5 画布变换
  8. android php 推送,php-Android通过Firebase推送通知(服务器端)
  9. android 11 版本更新内容,android 11怎么更新 android 11更新方法
  10. 渗透常用SQL注入语句合集
  11. 电工电子技术知识点总结(基本放大电路)
  12. Python转义符的使用
  13. html和css中盒子大小,CSS大小设置实例——盒子模型
  14. LINUX入门——Linux是什么?
  15. java muti实现图片上传_MutiFileUpload.java 多文件上传
  16. 生活随记 - 国庆假期怎么过才有意义呢
  17. 决策引擎服务平台blaze_是Blaze数据服务还是LiveCycle数据服务?
  18. 安卓游戏服务器文件是哪个文件夹,安卓手机游戏数据包放在哪个文件夹
  19. 13 MCMC(Markov Chain Monte Carlo)
  20. Vue install 报错 code EINTEGRITY

热门文章

  1. 使用TextRank算法为文本生成关键字和摘要
  2. 编排管理成容器云关键,Kubernetes和Swarm该选谁
  3. 震惊!NV Volta或用上48GB GDDR6显存
  4. 现学现卖微信小程序开发(二)
  5. LNMP-源码 nginx ,keepalived
  6. eclipse下的spring环境配置
  7. Jenkins 部署
  8. 转:python模块学习 ---- smtplib 邮件发送
  9. Windows Server 2003 R2中的“分布式文件系统”案例应用
  10. NFS应用场景及环境搭建