gpt4 book ai didi

java - 在Java中实现enqueue的更有效的方法是什么

转载 作者:行者123 更新时间:2023-12-01 13:50:13 25 4
gpt4 key购买 nike

所以我在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,几乎没有任何需要改进的地方。

你所做的充其量只是奇怪:

  • 您无需附加元素,而是复制整个内容。为什么?
  • 你在最高索引处插入新元素,为什么?这样,您的轮询(出队、删除等等)必须删除元素 0 处的索引,这对于 ArrayList 来说很慢。

实际上,我不知道您的民意调查会是什么样子。无论如何,您的队列不会执行我对这样调用的方法的期望。

关于java - 在Java中实现enqueue的更有效的方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20021188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com