如何从另一个类(java)调用peek()方法?

时间:2016-09-04 04:34:29

标签: java arrays stack

我的堆栈及其对应的方法在A类中。 现在在B类中,我想创建一个新的堆栈,从类A调用方法。具体来说,我想要查看A类中堆栈的元素,然后将我喜欢的那些添加到新堆栈中在B班。有人可以帮助我吗?我对此非常陌生! 附:我确实想知道如何在课程中这样做;我可以弄清楚如何在同一个类中完成它,但我试图拓宽我对跨类调用方法的理解。谢谢!

编辑: 有人要求我提到的代码: newStack.push(oldStack(StackOne).peek());

我没有那个权利,但以下是要素: StackOne是我的第一个类的名称,我在其中创建了第一个堆栈,而oldStack就在该类中。 我想从StackTwo(我的第二课)中窥探这些元素。如果我喜欢一个元素,我会把它从oldStack推送到newStack(最终导致类似于我上面发布的内容,但这不起作用)。

2 个答案:

答案 0 :(得分:0)

这是一个在其中封装堆栈的类。

MyStack.java

import java.util.Stack;

public class MyStack<T> {
    private Stack<T> stack;

    public MyStack() {
        stack = new Stack<T>();
    }

    public T peek() {
        return stack.peek();
    }

    public void push(T item) {
        stack.push(item);
    }
}

Main.java

public class Main {
    public static void main(String[] args) {
        MyStack<String> myStackA = new MyStack<String>();
        MyStack<String> myStackB = new MyStack<String>();

        myStackA.push("Hello");
        myStackA.push("Hi");

        myStackB.push(myStackA.peek());

        System.out.println(myStackA.peek()); //prints Hi
        System.out.println(myStackB.peek()); //prints Hi
    }
}

答案 1 :(得分:0)

我已经创建了一个程序,您可以使用它来了解如何从位于一个类(在我的情况A中)的堆栈中获取/查看值,以将其存储到位于其他类的其他堆栈中(在我的情况下为B)。

import java.util.*;
class A{
    public Stack st;
        public A(){
        st = new Stack();
    }
    public void pushA(Integer a){
    st.push(new Integer(a));
    }
    public Integer popA(){
    return (Integer)st.pop();
    }
    public Integer peekA(){
    return (Integer)st.peek();
    }
}
class B{
    public Stack st;
    public B(){
        st = new Stack();
    }
    public void pushB(Integer b){
    st.push(b);
    }
    public Integer popB(){
    return (Integer)st.pop();
    }
    public Integer peekB(){
    return (Integer)st.peek();
    }
}
class Main{
    public static void main(String ar[]){
    A stackOfA = new A();
    stackOfA.pushA(12);
    stackOfA.pushA(34);
    stackOfA.pushA(66);
    B stackOfB = new B();
    stackOfB.pushB(stackOfA.peekA());
    System.out.println("A:"+stackOfA.st);
    System.out.println("B:"+stackOfB.st);
    }
}

输出:

A:[12, 34, 66]
B:[66]