import java.util.*;public class StackL {
    private LinkedList list=new LinkedList();
    
    public void push(Object o){list.addFirst(o);}
    public void pop(){list.removeFirst();}
    public Object top(){ return list.getFirst();}
    public boolean empty(){ return list.isEmpty();}
    public int size(){return list.size();}
        public static void main(String[] args) {
              
        StackL stack1=new StackL();
        stack1.push("first");
        System.out.println(stack1.top());
        System.out.println(stack1.size());
        StackL stack2=new StackL();
        stack2.push("first");
        System.out.println(stack2.top());
        System.out.println(stack1.size());
        System.out.println(stack1.equals(stack2));
    }
}上述代码我是用StackL类来实现栈,同时在main中定义了两个栈stack1和stack2,两个栈的内容一样,为何采用equals方法对两个栈进行比较时,产生的结果是false呢?不懂,请各位多多指教!

解决方案 »

  1.   

    equals方法,最好在你的StackL类里覆盖一下,按照你自己的意愿决定如果比较。
      

  2.   

    要override Object.equals(Object obj)方法。
      

  3.   

    把你的容器当一般的类考虑吧,
    重新复写equals方法
      

  4.   

    嗯,override我知道,我原以为容器(以linkedlist容器为例)中如果包含相同的对象,且次序相同,equals方法就可以直接进行比较了,原来不是如此^_^