【发布时间】:2012-08-27 14:11:54
【问题描述】:
我想知道我应该对此代码进行哪些更改以减少其执行时间。
import java.util.*;
public class ExamPeekableQueueImpl <E extends Comparable<E>> implements ExamPeekableQueue<E> {
LinkedList<E> li = new LinkedList<E>();
public ExamPeekableQueueImpl(){
}
public void enqueue(E e){
if(li.isEmpty()){
li.add(0, e);
}
else
li.add(e);
}
public E dequeue(){
li.pollFirst();
return null;
}
public void printlist(){
System.out.println(li.toString());
}
public E peekMedian(){
int var = (((li.size())/2)+1);
Collections.sort(li);
//Integer var2 = li.get(var);
System.out.println("the median is:" + li.get(var-1));
return null;
}
public E peekMaximum(){
Collections.sort(li);
System.out.println("the maximum is:" + li.getLast());
return null;
}
public E peekMinimum(){
Collections.sort(li);
System.out.println("the minimum is:" + li.getFirst());
return null;
}
public int size(){
li.size();
return 0;
}
}
我还想知道是实现queues、LinkedList 更快还是ArrayList 或任何其他数据结构。
【问题讨论】:
-
您在哪里需要改进?添加或达到峰值?如果达到峰值,那么为什么不尝试树集呢?还是允许复制?请提供更多信息
-
或者使用
ArrayList而不是LinkedList。 -
每次需要最大值、中值或最小值时对集合进行排序肯定是非常低效的。
-
最后一个问题是一个非常典型的家庭作业问题。确定这不是家庭作业?您可能需要重新表述问题,以便获得更好的答案。
-
@brimborium:考试与家庭作业/学校作业有何不同?