Итак, у меня есть этот простой код в java. Он вставляет (добавляет) и элемент в конец очереди (реализуется ArrayList) без изменения исходной очереди. Код:Что является более эффективным способом реализации enqueue в Java
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();
}
Любые идеи? спасибо
Разве это недостаточно эффективно? Как вы профилировали приложение? – Kayaman
зависит от того, что вы хотите делать с товарами? – lordkain
Вы пробовали собственный [queue] java (http://docs.oracle.com/javase/7/docs/api/java/util/Queue.html)? Почему вы думаете, что это недостаточно эффективно? – Sage