在Java中为Deque指定大小

时间:2017-06-07 10:11:32

标签: java deque arraydeque

我无法为双端队列(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

由于我没有删除或读取任何值,因此我期待队列已满。这里有什么我想念的吗?或者我只是使用队列错误?谢谢!

2 个答案:

答案 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