一道java代码优化的问题

问题描述

前2天面试的时候,遇到一个代码优化的题目没有什么头绪,发出来大家讨论讨论要求优化第一个fctPasOptimalmodifList修改list里的值,traiteResultat数据存储用于之后处理部分代码如下。。。publicfinalList<Integer>fctPasOptimal(){List<Integer>locNbList=newLinkedList<Integer>();for(inti=0;i<30000;++i){CalendarlocCalendar=newGregorianCalendar();locNbList.add(computeNewValue(locCalendar.get(Calendar.YEAR),i));}modifListe(locNbList);DoublelocResultat=0.0;for(inti=0;i<locNbList.size();++i){finalDoublelocTmpValue=doOperation(locNbList.get(i));if(locTmpValue!=null){locResultat+=locTmpValue;}}traiteResultat(locResultat);returnlocNbList;}

解决方案

解决方案二:
木有人解答么?。。。还是大家都去过情人节了
解决方案三:
这个代码谁也看不进去
解决方案四:
1:CalendarlocCalendar=newGregorianCalendar();搬到循环外面去2:for(inti=0;i<locNbList.size();++i)locNBList是LinkedList,应使用Iterator进行迭代,LinkedList使用get(index)的随机访问会很慢。至于其他的么,代码也不完整,就看不出啥了。
解决方案五:
引用3楼bao110908的回复:

1:CalendarlocCalendar=newGregorianCalendar();搬到循环外面去2:for(inti=0;i<locNbList.size();++i)locNBList是LinkedList,应使用Iterator进行迭代,LinkedList使用get(index)的随机访问会很慢。至于其他的么,代码也不完整,就看不……

还是谢谢啦不知道怎么给悬赏
解决方案六:
1:因为都是随机访问,所以用ArrayList比LinkedList快;2:因为List的size已经定了3000,所以可以在构造函数里面设入:List<Integer>locNbList=newArrayList<Integer>(3000);这样节省大量背后copy数组的操作。
解决方案七:
引用3楼bao110908的回复:

1:CalendarlocCalendar=newGregorianCalendar();搬到循环外面去2:for(inti=0;i<locNbList.size();++i)locNBList是LinkedList,应使用Iterator进行迭代,LinkedList使用get(index)的随机访问会很慢。至于其他的么,代码也不完整,就……

如果CalendarlocCalendar=newGregorianCalendar();搬到循环外面去的话,如果在循环中正好跨年那逻辑就不对了。
解决方案八:
引用6楼michaellufhl的回复:

引用3楼bao110908的回复:1:CalendarlocCalendar=newGregorianCalendar();搬到循环外面去2:for(inti=0;i<locNbList.size();++i)locNBList是LinkedList,应使用Iterator进行迭代,LinkedList使用get(index)的随机……

呵呵,那要看楼主具体的需求了,逻辑上来讲不会是放到里面的。
解决方案九:
该回复于2011-02-16 08:49:23被版主删除

时间: 2025-01-01 13:47:11

一道java代码优化的问题的相关文章

一道JAVA代码优化的题

问题描述 前2天面试的时候,遇到一个代码优化的题目没有什么头绪,发出来大家讨论讨论要求优化 第一个fctPasOptimalmodifList 修改list里的值, traiteResultat 数据存储用于之后处理部分代码如下...  public final List<Integer> fctPasOptimal() {        List<Integer> locNbList = new LinkedList<Integer> ();    for (int

简介Java代码优化的过程

衡量程序的标准 衡量一个程序是否优质,可以从多个角度进行分析.其中,最常见的衡量标准是程序的时间复杂 度.空间复杂度,以及代码的可读性.可扩展性.针对程序的时间复杂度和空间复杂度,想要优化程序代码,需要对数据结 构与算法有深入的理解,并且熟悉计算机系统的基本概念和原理:而针对代码的可读性和可扩展性,想要优化程序代码,需 要深入理解软件架构设计,熟知并会应用合适的设计模式. 首先,如今计算机系统的存储空间已经足够大了,达到 了 TB 级别,因此相比于空间复杂度,时间复杂度是程序员首要考虑的因素.为

代码分析-一道Java笔试题,求解答(关于类的加载与初始化)

问题描述 一道Java笔试题,求解答(关于类的加载与初始化) 自己查了一些资料,还是看不懂这个程序的输出结果,求各位详细解释初始化和执行过程,谢! public class Alibaba { public static int k = 0; public static Alibaba t1 = new Alibaba("t1"); public static Alibaba t2 = new Alibaba("t2"); public static int i =

使用 Jtest:一款优秀的 Java 代码优化和测试工具

Jtest 简介 Jtest 是 Parasoft 公司推出的一款针对 Java 语言的自动化代码优化和测试工具,它通过自动化实现对 Java 应用程序的单元测试和编码规范校验,从而提高代码的可靠性以及 Java 软件开发团队的开发效率. 主要功能 静态代码分析: 静态代码分析是指不运行源程序,仅通过分析源程序的语法.结构.接口等来检查程序正确性,找出代码隐藏的缺陷之处. Jtest 的静态代码分析功能能够按照其内置的超过 800 条的 Java 编码规范自动检查并纠正这些隐蔽且难以修复的编码错

一道java题目,请大虾们帮帮忙,我是个新手,谢谢

问题描述 一道java题目,请大虾们帮帮忙,我是个新手,谢谢 编写一个程序,对于输入的一段程序,可以获取该程序的单词符号.单词符号的类别有基本字.标识符.常数.算符和界符.关键字为基本字,由字母组成,如int.for和while:变量名和函数名为标识符,由字母和数字构成,如fun1和age:固定不变的数值为常数,如12.13.86和25e8(科学计数法):算符如+.-.*./ .%.&&:界符如 {.[.(. :和:等. 如, public?static?void?main (String

java多线程问题-有一道Java面试题,没太理解明白,求大神指点啊~

问题描述 有一道Java面试题,没太理解明白,求大神指点啊~ package test2; /** 设计4个线程,其中两个线程每次对i增加1,另外两个线程对i每次减少1 @author liuyu * */ public class Test { private int i ; private synchronized void inc(){ i ++; System. out .println(Thread.currentThread().getName()+ "--inc--" +

Java代码优化细节_java

代码优化细节  1.尽量指定类.方法的final修饰符 带有final修饰符的类是不可派生的.在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的.为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写.如果指定了一个类为final,则该类所有的方法都是final的.Java编译器会寻找机会内联所有的final方法,内联对于提升Java运行效率作用重大  2.尽量重用对象  特别是String对象

Java代码优化(转)

前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了.代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨:但是如果有足够的时间开发.维护代码,这时候就必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,对于代码的运行效率绝对是有提升的. 代码优化的目标是:

Java代码优化--尽可能地使用stack(栈)变量(方法内部的局部变量)

变量|优化   Java程序包含了大量的对象,我们需要了解它们是从哪里被访问的,变量存储于何处对程序的性能有显著的影响--尤其是某些需要被频繁访问的变量. 我们写一个Java类,在其内部方法中定义的局部变量或对象是存储在stack(堆栈)中的,且JVM是一种stack-based的,因此访问和操纵stack中的数据时性能最佳.而Java类的instance变量(这个类的field)和static变量是在constant pool(常量池)中存储和得到访问的.constant pool中保存了所有