黑马程序员技术交流社区

标题: 关于ArrayList中元素的比较问题 [打印本页]

作者: Man_hui    时间: 2016-3-20 12:19
标题: 关于ArrayList中元素的比较问题
如题,在ArrayList中,想比较元素是否一样的话,用equals可以比较吗?还是直接用==号
作者: Man_hui    时间: 2016-3-20 12:47
public class Test1 {
        public static void main(String[] args) {
                ArrayList<Student> arr = new ArrayList<Student> ();
                Student s1=new Student("风清扬",23);
                Student s2=new Student("刘意",24);
                Student s3=new Student("冯佳",18);
                Student s4=new Student("周星驰",19);
                Student s5=new Student("老毕",19);
                Student s6=new Student("周星驰",19);
                Student s7=new Student("刘意",24);
                arr.add(s1);
                arr.add(s2);
                arr.add(s3);
                arr.add(s4);
                arr.add(s5);
                arr.add(s6);
                arr.add(s7);
                for (int i = 0; i < arr.size(); i++) {
                        for (int j = 0; j < i; j++) {
                                if (arr.get(i).equals(arr.get(j))) {
                                        arr.remove(j);
                                }
                        }
                }
                for(Student s:arr){
                        System.out.println(s.getName()+"---"+s.getAge());
                }
        }
}

我比较String类型的就可以,为什么比较对象就不行了呢
作者: 11210107    时间: 2016-3-20 16:30
Student类有没有重写equals方法?如果没有重写比较的是两个对象的地址值。String类重写了Object类的equals方法比较的是内容。
作者: Man_hui    时间: 2016-3-20 18:19
11210107 发表于 2016-3-20 16:30
Student类有没有重写equals方法?如果没有重写比较的是两个对象的地址值。String类重写了Object类的equals ...

好吧~ 那如果我要比较对象只能通过重写equals方法实现吗
作者: 11210107    时间: 2016-3-20 19:18
Man_hui 发表于 2016-3-20 18:19
好吧~ 那如果我要比较对象只能通过重写equals方法实现吗

一般来说比较两个对象是否相同,比较的都是对象属性值是否相同。都需重写equals方法比较。
作者: Man_hui    时间: 2016-3-20 23:43
11210107 发表于 2016-3-20 19:18
一般来说比较两个对象是否相同,比较的都是对象属性值是否相同。都需重写equals方法比较。 ...

了解了 3Q




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2