问题描述
前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被版主删除