问个ArrayList中contains函数的问题
日期:2006-07-22 荐:
问个ArrayList中contains函数的问题假定我有个类Aclass A{ int a; public A(int n){a=n;} public boolean equals(A test){if(this.a==test.a) return true; else return false;}}而在另外一个类中有个ArrayList的对象al.其中存放了一些A对象。我现在想通过ArrayList的contains函数来判断某个A对象a是否在这个ArrayList中,有什么方法能够使得当a的值与al中的某一个值相同时,这个contains函数返回true。举例来说:import java.util.ArrayList;public class B{ public ArrayList al; public B(){al=new ArrayList();} public static void main(String[] args){ B b=new B(); b.al.add(new A(1)); b.al.add(new A(2)); A a=new A(1); b.al.contains(a);//要使这个结果为true }}我的想法是这样的,因为contains函数中是通过object的equals函数来进行判断的,equals函数是通过比较两个对象的地址来判断的,如果A中没有重写equals函数,那么显然不可能达到目的。所以我重写了A中的equals函数。但是这样的结果还是不对。我能想到的就是遍历那个ArrayList,取出每一个元素然后显示调用A中的equals函数,那样肯定能做,但是方法好像比较土,而且开销比较大。不知道大家有没有好些的解决方法。你的equals根本不是override public boolean equals(Object test) { //参数类型一定要是Object if (this.a == ((A)test).a) { return true; } else { return false; } }
标签: