我正在使用队列实现堆栈。我的pop()函数最初看起来像:
public void pop(){
queue1.isEmpty() ? queue2.poll() : queue1.poll();
}
这没编译。这个定义有什么问题?
答案 0 :(得分:1)
您需要分配(或返回)Object
您的轮询。像
public void pop(){
Object obj = queue1.isEmpty() ? queue2.poll() : queue1.poll();
}
或(我认为你真正想要的) - 类似
public Object pop(){
return queue1.isEmpty() ? queue2.poll() : queue1.poll();
}
答案 1 :(得分:1)
条件运算符仅适用于表达式上下文。陈述不是表达。在您的情况下,您需要使用if
语句:
public void pop(){
if (queue1.isEmpty()) {
queue2.poll();
} else {
queue1.poll();
}
}
如果你担心表现,那就不要了。使用if
语句绝对没有性能损失。