0

(这是使用java.util.Stack

在我的代码中,我得到了一个值,比如说一个字符串“1”,我想把它放在这个数字堆栈的底部。

“4”

“3”

“2”

现在我为java.util.Stack使用的方法实际上并没有一种方法可以将我的值“1”发送到这个堆栈的底部,而是只让我将值推送到堆栈的顶部堆栈对我没有任何好处。

有没有办法可以将“1”发送到这个堆栈的底部?

4

3 回答 3

1

你可以这样做。该add方法允许您将值放在堆栈中的任何位置。但是你基本上颠覆了堆栈的性质。堆栈是 LIFO(后进先出)。如果这是您想要做的,您可能需要重新考虑您的设计。有多种Collection实现可供您选择。检查 API 并阅读文档,看看哪一个最适合您的需求。

Stack<Integer> stack = new Stack<>();
stack.push(4);
stack.push(3);
stack.push(2);

stack.add(0,1); 

while(!stack.isEmpty()) {
   System.out.println(stack.pop());
}

印刷

2
3
4
1
于 2020-11-07T14:03:01.777 回答
1

它是一个堆栈,一种后进先出的数据结构。从根本上说,除非它是空的,否则你不能添加到底部。

在此处输入图像描述

您可能想要使用不同的数据类型,我认为java.util.Deque会为您工作。

于 2020-11-07T13:24:28.493 回答
0

你实际上不能。您只能推送和弹出堆栈的顶部元素。如果您希望同时通过顶部和底部访问您的数据结构,您应该使用另一个数据结构。尝试使用 LinkedList 类代替它提供您想要做的事情。

于 2020-11-07T13:19:38.760 回答