在下面的代码中,我有两个链接列表liperm和litemp.我想首先使用liperm的值初始化litemp,然后添加其他值.但它不起作用,因为它没有初始化它们.你能帮忙吗?
public class ExamImmutableQueueImpl<E> implements ExamImmutableQueue<E> {
LinkedList<E> liperm = new LinkedList<E>();
LinkedList<E> litemp = new LinkedList<E>(liperm);
public ExamImmutableQueueImpl(LinkedList li){
System.out.println(li.toString());
}
public ExamImmutableQueueImpl(){}
@Override
public ExamImmutableQueue<E> enqueue(E e) {
System.out.println(litemp.toString());
litemp.add(e);
return new ExamImmutableQueueImpl<>(litemp);
}
public final void setQueue(E e){
liperm.add(e);
}
public void getQueue(){
System.out.println(litemp.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
主要方法是:
public static void main(String args[]){
ExamImmutableQueueImpl<Integer> o1 = new ExamImmutableQueueImpl<Integer>();
ExamImmutableQueue<Integer> obj;
o1.setQueue(2);
o1.setQueue(1);
o1.setQueue(2);
o1.setQueue(3);
obj = o1.enqueue(6);
Run Code Online (Sandbox Code Playgroud)
界面是:
public interface ExamImmutableQueue<E> {
public ExamImmutableQueue<E> enqueue(E e);}
Run Code Online (Sandbox Code Playgroud)
我将首先给你一个建议:把这些代码放在一边,重新开始.这在设计层面上似乎有什么问题:
setQueue它不会设置任何队列.至少要仔细选择你的名字.方向:
litemp不应该是一个阶级领域.也许不应该存在.lipermE是假设是可变的还是不可变的?这会对您可以做的事情产生影响.enqueue.为了使事情变得更好,你也可以将Queue作为界面.注意:一个不可变队列似乎对我没有意义(理论上给出了一个队列).在开始实施之前,再次询问此集合的用法.