刚学到集合这一块儿,作业中让自学Stack类,并且自己建立集合并遍历。真是遇到老多问题。
首先,Stack 类表示先进后出(LIFO)的对象堆栈。有自己的方法。
- import java.util.Stack;
- public class QuestionSixDemo {
- public static void main(String[] args) {
- stack();
- }
- public static void stack() {
- Stack<String> sta = new Stack<String>();
- sta.push("java");
- sta.push("World");
- sta.push("Hello");
-
-
- while(!sta.empty()){
- System.out.println(sta.pop());
- }
- // System.out.println(sta.pop());
- // System.out.println(sta.pop());
- // System.out.println(sta.pop());
-
- /*Enumeration<String> e=sta.elements();
- while(e.hasMoreElements()){
- String s = e.nextElement();
- System.out.println(s);
- }*/
-
- /*for (int i = 0; i < sta.size(); i++) {
- System.out.println(sta.pop());
- }
- */
- }
- }
复制代码
看代码,可以成功显示出先进后出的就只有while 循环以及那三个pop输出语句。注释掉Enumeration<String> e=sta.elements();没有按照先进后出的方式显示;最后的for循环可以先进后出显示,但只显示两个,只有hello,world,没有Java,将System.out.println(sta.pop());换成System.out.println(sta.get());,三个元素全部显示,但不是先进后出。用增强for循环,- for(String s : sta){
- System.out.println(s);
- }
复制代码
还是没有先进后出。最后发现只要用pop()方法,只显示两个元素,咋回事??????????
最后,跟同桌讨论用while,- while(!sta.empty()){
- System.out.println(sta.pop());
- }
复制代码
如果集合不空,就循环。最终成功显示先进后出的顺序并且一个不少。
不知有没有啥错误跟不好的地方,欢迎拍砖与改进。
|