如何在不使用循环的情况下将列表中的项复制到堆栈中

15

我有一个栈(Stack)和一个列表(List),需要将列表中的所有项复制到栈中,但不能使用循环语句,如for、foreach等等。

有没有建议的方法来完成这个任务?


1
为什么你需要在不使用任何循环的情况下完成它? - Øyvind Bråthen
在Java中,您可以通过以下方式实现:{ List b = new ArrayList(a); Collections.copy(b,a);} - fsonmezay
这听起来像是作业或面试问题...它是哪一个?! - Nick
1
goto 被认为是一个循环吗? :) - Marek
@fsonmezay:你也可以在C#中这样做,但它仍然使用循环。它只是隐藏在“copy”内部。 - Jon
4个回答

35

1
而我的堆栈将以相反的顺序弹出myList项目。不客气。 - Ε Г И І И О

3

如果您希望按照列表中出现的顺序弹出项目,则在创建堆栈之前,请将列表反转。

var myStack = new Stack<MyObjectType>(myList.Reverse());

0
new Stack<T>(myListOfT)

或者(不使用循环)

myStack.Push(myList[0]);
myStack.Push(myList[1]);
myStack.Push(myList[2]);
myStack.Push(myList[3]);
...

这将变得非常乏味。循环有什么问题吗?


-1
在Java 1.8中,Stack有一个预定义的方法叫做addAll - Item将被推入栈。

stack.addAll(list);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接