[英]what is a more efficient way to implement enqueue in Java
所以我在Java中有这个简单的代码。 它将队列和元素添加(添加)到队列的末尾(由ArrayList实现),而无需更改原始队列。 编码:
public class MyQueue<T>{
private List<T> body;
// some constructors and helper functions.
//copy constructor
public Queue(List<T> list){
this.body = list;
}
//this is the function
public MyQueue<T> enqueue(T obj){
List<T> temp = new ArrayList<T>(body);
temp.add(obj);
return new Queue<T>(temp);
}
整个思路是使入队更快,更高效,而且正如您所注意到的那样,而且无需更改原始队列的值。
更新为了完成该想法。
1-这是一个任务,所以大学,所提供的框架不要更改,任务是使功能入队更快(我的确意识到我要复制两次,这就是较慢的部分)。
2-至于辅助功能,它们很简单:
public T peek(){
if(body.isEmpty()){
thrown new NoSuchElementException();
}
return body.get(0);
}
public int size(){
return body.size();
}
有任何想法吗? 谢谢
队列是一种基本的数据结构,很难使它变得比工作过的专家还要好。 最简单,最快的通用实现可能是ArrayDeque
,几乎没有什么可改进的。
您所做的充其量是很奇怪的:
ArrayList
来说很慢。 实际上,我不知道您的poll
会是什么样子。 无论如何,您的入队都不会达到我期望的那样的方法。
使用LinkedList而不是ArrayList。 您不需要队列中的索引访问,但是您需要快速入队/出队。 如果需要索引访问。 根本不是一个队列。 只需使用add()方法,就不必每次都创建一个全新的队列。 您的enqueue()方法应返回'this'或void。 并且不允许调用者提供列表:创建自己的列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.