A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Man_hui 中级黑马   /  2016-3-20 12:19  /  560 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如题,在ArrayList中,想比较元素是否一样的话,用equals可以比较吗?还是直接用==号

5 个回复

倒序浏览
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类型的就可以,为什么比较对象就不行了呢
回复 使用道具 举报
Student类有没有重写equals方法?如果没有重写比较的是两个对象的地址值。String类重写了Object类的equals方法比较的是内容。
回复 使用道具 举报
11210107 发表于 2016-3-20 16:30
Student类有没有重写equals方法?如果没有重写比较的是两个对象的地址值。String类重写了Object类的equals ...

好吧~ 那如果我要比较对象只能通过重写equals方法实现吗
回复 使用道具 举报
Man_hui 发表于 2016-3-20 18:19
好吧~ 那如果我要比较对象只能通过重写equals方法实现吗

一般来说比较两个对象是否相同,比较的都是对象属性值是否相同。都需重写equals方法比较。
回复 使用道具 举报
11210107 发表于 2016-3-20 19:18
一般来说比较两个对象是否相同,比较的都是对象属性值是否相同。都需重写equals方法比较。 ...

了解了 3Q
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马