4

我无法为我的双端队列(双端队列)的大小分配限制。似乎我的队列永远不会满,只要我添加或提供价值就调整大小。我的简单代码只接受一个字符串值,用空格“”分割它,循环所有内容并将其添加到队列中。

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

我期待队列将满,因为我没有从中删除或读取任何值。有什么我在这里想念的吗?还是我只是使用错误的队列?谢谢!

4

2 回答 2

0

我建议您以所需的行为实现自己的类。否则已经存在删除过多元素的类。看到这个答案 https://stackoverflow.com/a/21699069/228358

于 2017-06-07T10:22:35.737 回答
0

当你这样做

Deque<String> stack = new ArrayDeque<>(3);

3 不是大小,而是文档在此处解释的初始容量

ArrayDeque 可以根据需要增长,并且您不会在构造函数中使用该参数限制大小。


您可以处理不公开数组的工作,而是每次要在双端队列中添加/提供对象时进行检查

if (stack.size()<3) {
    stack.offer(token);
}
于 2017-06-07T10:13:13.303 回答