我应该将一个Arraylist提供给一个堆栈,然后显然从该堆栈中构建一个列表。理论上这意味着列表应该颠倒,是吗?我以为我把它放在包里,但我的输出是:
[1, 2, 3, 4, 5]
AAAAANNNDDDDD REVERSE!
[1, 2, 3, 4, 5]
显然我在某个地方蠢蠢欲动,但我不知道在哪里。代码如下,但要注意,我对此并不擅长,所以如果有一些东西可怕地冒犯你,但实际上并不是问题,我宁愿它不是讨论的焦点。
package stackclass;
import java.util.ArrayList;
import java.util.Stack;
public class StackClass
{
static ArrayList<String> list = new ArrayList();
static Stack<String> popper = new Stack();
public static ArrayList<String> reverse(ArrayList<String> n)
{
for(int i = 0; i != n.size();)
{
popper.push(n.get(n.size() - 1));
n.remove(n.size() - 1);
}
for(int i = 0; i != popper.size();)
{
n.add(popper.pop());
}
return n;
}
public static void main(String[] args)
{
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
System.out.println(list);
System.out.println("AAAAANNNDDDDD REVERSE!");
ArrayList n = reverse(list);
System.out.println(n);
}
}
感谢任何和所有帮助。
答案 0 :(得分:1)
在你的第一个for循环中,你应该从列表中取出第一个元素而不是最后一个元素:
public static ArrayList<String> reverse(ArrayList<String> n)
{
for(int i = 0; i < n.size(); i++)
{
popper.push(n.get(i));
n.remove(0);
}
for(int i = 0; i != popper.size(); i++)
{
n.add(popper.pop());
}
return n;
}
你也缺少增加你的计数器(i ++)
答案 1 :(得分:1)
public static ArrayList<String> reverse(ArrayList<String> n)
{
while(!n.isEmpty())
{
popper.push(n.get(0));
n.remove(0);
}
while(!popper.isEmpty()){
n.add(popper.pop());
}
return n;
}
这很有效。