我无法为双端队列(Deque)的大小分配限制。似乎我的队列永远不会变满,只要我添加或提供一个值就可以调整大小。我的简单代码只接受一个字符串值,用空格“”拆分它,循环所有内容并将其添加到队列中。
evaluate("A B C D E F");
public static int evaluate(final String input){
final Deque<String> stack = new ArrayDeque<>(3);
final String[] tokens = input.split(" ");
for (String token:tokens){
System.out.println(stack.offer(token));
}
System.out.println(stack.size());
}
返回:
true
true
true
true
true
true
6
由于我没有删除或读取任何值,因此我期待队列已满。这里有什么我想念的吗?或者我只是使用队列错误?谢谢!
答案 0 :(得分:0)
当你这样做时
Deque<String> stack = new ArrayDeque<>(3);
3不是尺寸,而是文档解释here
的初始容量ArrayDeque可以根据需要增长,并且您不会在构造函数中使用该参数限制大小。
你可以处理一个不暴露数组的工作,而是每次想要在deque中添加/提供一个对象时进行检查
if (stack.size()<3) {
stack.offer(token);
}
答案 1 :(得分:0)
我建议您使用所需的行为来实现自己的类。否则已存在删除多余元素的类。看到这个答案 https://stackoverflow.com/a/21699069/228358