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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

ArrayList存储自定义元素复写的equals方法是在什么时候被调用的?

4 个回复

倒序浏览
是在遍历ArrayList元素时,通过判断来实现的。
Iterator it = array.iterator();
                while (it.hasNext()) {
                        Student s = (Student) it.next();
                        // 在新集合中判断,看是否存在这个元素
                        if (!array2.contains(s)) {
                                // 如果s不再array2中存在,就添加
                                array2.add(s);
                        }
                }

contains的底层源码就是依靠equals来实现的。所以要重写equals()

点评

你这个程序会报错吗,迭代器迭代的时候,可以用集合操作集合吗?  发表于 2015-1-7 10:07
回复 使用道具 举报
如果你想往ArrayList中存入自定义的不重复的对像时,可以通过自定义来判断相同对像条件。由于contains remove方法都是调用equals方法来判断的,所以equals方法这时被自动调用。
回复 使用道具 举报
只有需要比较两个元素相同与否时才被调用吧。List集合不同于Set集合,List集合中的元素可以重复,所以在向其中增加元素的时候并不需要判断元素重复与否,也就是不需要调用equals方法的,而set集合就不一样了,存放在其中的元素是不能重复的,所以在向其中添加元素的时候就需要调用equals方法比较两个元素是否相同。一般情况下需要重写equals方法和compare方法,以保证元素的唯一性。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马