我想到了一种方法,该方法将仅支持堆栈操作
push
和pop
的集合作为参数。最合适的接口是什么?
public void foo(WhatShouldThisTypeBe<String> stack) {
stack.push(bar());
...;
String xyz = stack.pop();
}
我的想法是:
我可以让我的方法采用
java.util.Stack
,但这是一个遗留类,具有不需要的同步开销,不应该在 2023 年使用。
我可以让它采用
List
(支持等效操作 addLast()
和 removeLast()
),但这会对具体类型提出不必要的要求,例如采用第 n 个元素的能力。
我可以让它需要一个
Deque
,但这又会对具体类型提出不必要的要求,例如对队列操作add
和remove
的支持,这不是必需的。
有没有比上述任何一个更适合堆栈操作的 Java 接口?
public void foo(Deque<String> stack) {
stack.push(bar());
// ...;
String xyz = stack.pop();
}
使用 Deque,您可以进行必要的堆栈操作,而无需对具体类型施加不必要的要求。该接口是 Java Collections Framework 的一部分,不需要像遗留 Stack 类那样的同步开销。