我正在使用队列实现一个堆栈。我的pop()函数最初看起来像:
public void pop(){
queue1.isEmpty() ? queue2.poll() : queue1.poll();
}
这没有编译。这个定义有什么错?
您需要分配(或返回)正在轮询的Object
。类似的东西
public void pop(){
Object obj = queue1.isEmpty() ? queue2.poll() : queue1.poll();
}
或者(我认为你真正想要的)——类似的东西
public Object pop(){
return queue1.isEmpty() ? queue2.poll() : queue1.poll();
}
另见JLS-15.25。条件运算符? :
。
条件运算符仅适用于表达式上下文。语句不是表达式。在您的情况下,您需要使用if
语句:
public void pop(){
if (queue1.isEmpty()) {
queue2.poll();
} else {
queue1.poll();
}
}
如果你关心性能,那就不要担心。使用if
语句绝对不会对性能造成影响。