打字猴:1.700443686e+09
1700443686
1700443687 List<String>names=Arrays.asList(“张三”,“李四”,“王五”);
1700443688
1700443689 一句话完成了列表的定义和初始化,看似很便捷,却深藏着重大隐患—列表长度无法修改。想想看,如果这样一个List传递到一个允许add操作的方法中,那将会产生何种结果?如果读者有这种习惯,请慎之戒之,除非非常自信该Lis只用于读操作。
1700443690
1700443691
1700443692
1700443693
1700443694 编写高质量代码:改善Java程序的151个建议 [:1700438138]
1700443695 编写高质量代码:改善Java程序的151个建议 建议67:不同的列表选择不同的遍历方法
1700443696
1700443697 我们来思考这样一个案例:统计一个省的各科高考平均值,比如数学平均分是多少,语文平均分是多少等,这是每年招生办都会公布的数据,我们来想想看该算法应如何实现。当然使用数据库中的一个SQL语句就能求出平均值,不过这不再我们的考虑之列,这里还是使用纯Java的算法来解决之,看代码:
1700443698
1700443699 public static void main(String[]args){
1700443700
1700443701 //学生数量,80万
1700443702
1700443703 int stuNum=80*10000;
1700443704
1700443705 //List集合,记录所有学生的分数
1700443706
1700443707 List<Integer>scores=new ArrayList<Integer>(stuNum);
1700443708
1700443709 //写入分数
1700443710
1700443711 for(int i=0;i<stuNum;i++){
1700443712
1700443713 scores.add(new Random().nextInt(150));
1700443714
1700443715 }
1700443716
1700443717 //记录开始计算时间
1700443718
1700443719 long start=System.currentTimeMillis();
1700443720
1700443721 System.out.println(“平均分是:”+average(scores));
1700443722
1700443723 System.out.println(“执行时间:”+(System.currentTimeMillis()-start)+“ms”);
1700443724
1700443725 }
1700443726
1700443727 //计算平均数
1700443728
1700443729 public static int average(List<Integer>list){
1700443730
1700443731 int sum=0;
1700443732
1700443733 //遍历求和
1700443734
1700443735 for(int i:list){
[ 上一页 ]  [ :1.700443686e+09 ]  [ 下一页 ]