我有一个栈(Stack)和一个列表(List),需要将列表中的所有项复制到栈中,但不能使用循环语句,如for、foreach等等。
有没有建议的方法来完成这个任务?
我有一个栈(Stack)和一个列表(List),需要将列表中的所有项复制到栈中,但不能使用循环语句,如for、foreach等等。
有没有建议的方法来完成这个任务?
你可以从任何实现了IEnumerable接口的对象创建堆栈。
var myStack = new Stack<MyObjectType>(myList);
参见MSDN:http://msdn.microsoft.com/en-us/library/76atxd68.aspx
不过,堆栈构造函数将在内部使用循环,只是你看不到它。
如果您希望按照列表中出现的顺序弹出项目,则在创建堆栈之前,请将列表反转。
var myStack = new Stack<MyObjectType>(myList.Reverse());
new Stack<T>(myListOfT)
或者(不使用循环)
myStack.Push(myList[0]);
myStack.Push(myList[1]);
myStack.Push(myList[2]);
myStack.Push(myList[3]);
...
这将变得非常乏味。循环有什么问题吗?
stack.addAll(list);