迭代类的对象

时间:2015-10-10 19:17:48

标签: java stack

在下面的代码中,我实例化了一个类的对象,并想知道我是否正朝着正确的方向前进?既然它不是一个集合,有没有办法可以迭代我使用堆栈类对象插入的项目?或者解决方案设计部分有问题吗?

package stack;

import java.util.LinkedList;
import java.util.Queue;

public class StackUsingQPartII {


    Queue<Integer> q1 = new LinkedList<Integer>();
    Queue<Integer> q2 = new LinkedList<Integer>();

    public int pop() {
        if (q1.peek() == null) {
            System.out.println("The stack is empty, nothing to return");
            int i = 0;
            return i;
        } else {
            int pop = q1.remove();
            return pop;
        }
    }

    public void push(int data) {

        if (q1.peek() == null) {
            q1.add(data);
        } else {
                for (int i = q1.size(); i > 0; i--) {
                    q2.add(q1.remove());
                }
                q1.add(data);
                for (int j = q2.size(); j > 0; j--) {
                    q1.add(q2.remove());
                }

             }
    }



    public static void main(String[] args) {


        StackUsingQPartII st = new StackUsingQPartII ();

        st.push(2);



    }

}

1 个答案:

答案 0 :(得分:1)

您可以使包含堆栈实现的类返回iterator()以迭代队列中的元素。可以简单地将iterator()功能委托给包含堆栈元素的基础容器类。

    public class StackUsingQPartII implements Iterable<Integer>{

        @Override
        public Iterator<Integer> iterator() {
            return q1.iterator();
        }

        public static void main(String[] args) {

            StackUsingQPartII st = new StackUsingQPartII();
            st.push(2);

            Iterator<Integer> it = st.iterator();
            while (it.hasNext()) {
                Integer i = it.next();
                System.out.println(i);
            }
       }
}