黑马程序员技术交流社区

标题: ArrayList存储自定义元素复写的equals方法是在什么时候被调..... [打印本页]

作者: 18334705181    时间: 2015-1-3 00:49
标题: ArrayList存储自定义元素复写的equals方法是在什么时候被调.....
ArrayList存储自定义元素复写的equals方法是在什么时候被调用的?

作者: Jason996    时间: 2015-1-3 23:34
是在遍历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-5 22:05
如果你想往ArrayList中存入自定义的不重复的对像时,可以通过自定义来判断相同对像条件。由于contains remove方法都是调用equals方法来判断的,所以equals方法这时被自动调用。
作者: chudaming213    时间: 2015-1-6 20:52
只有需要比较两个元素相同与否时才被调用吧。List集合不同于Set集合,List集合中的元素可以重复,所以在向其中增加元素的时候并不需要判断元素重复与否,也就是不需要调用equals方法的,而set集合就不一样了,存放在其中的元素是不能重复的,所以在向其中添加元素的时候就需要调用equals方法比较两个元素是否相同。一般情况下需要重写equals方法和compare方法,以保证元素的唯一性。




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