用于堆栈操作的Java接口

问题描述 投票:0回答:1

我想到了一种方法,该方法将仅支持堆栈操作

push
pop
的集合作为参数。最合适的接口是什么?

public void foo(WhatShouldThisTypeBe<String> stack) {
    stack.push(bar());
    ...;
    String xyz = stack.pop();
}
    

我的想法是:

  1. 我可以让我的方法采用

    java.util.Stack
    ,但这是一个遗留类,具有不需要的同步开销,不应该在 2023 年使用。

  2. 我可以让它采用

    List
    (支持等效操作
    addLast()
    removeLast()
    ),但这会对具体类型提出不必要的要求,例如采用第 n 个元素的能力。

  3. 我可以让它需要一个

    Deque
    ,但这又会对具体类型提出不必要的要求,例如对队列操作
    add
    remove
    的支持,这不是必需的。

有没有比上述任何一个更适合堆栈操作的 Java 接口?

java data-structures interface stack
1个回答
0
投票
public void foo(Deque<String> stack) {
    stack.push(bar());
    // ...;
    String xyz = stack.pop();
}

使用 Deque,您可以进行必要的堆栈操作,而无需对具体类型施加不必要的要求。该接口是 Java Collections Framework 的一部分,不需要像遗留 Stack 类那样的同步开销。

© www.soinside.com 2019 - 2024. All rights reserved.