黑马程序员技术交流社区

标题: contians()方法底层依赖equals()方法? [打印本页]

作者: lijiy09    时间: 2016-3-17 22:33
标题: contians()方法底层依赖equals()方法?
LinkedList<Student> link = new LinkedList<Student>();

        Student s1 = new Student("张三", 26);
        Student s2 = new Student("王五", 27);
        Student s3 = new Student("李四", 28);
        Student s4 = new Student("李四", 29);
        Student s5 = new Student("张三", 26);
        Student s6 = new Student("张三", 25);

        link.add(s1);
        link.add(s2);
        link.add(s3);
        link.add(s4);
        link.add(s5);
        link.add(s6);

        LinkedList<Student> newLink = new LinkedList<Student>();
        Iterator<Student> it = link.iterator();
        while (it.hasNext()) {
                Student s = it.next();
                if (!newLink.contains(s)) {
                        newLink.add(s);
                }
        }

        for (int x = 0; x < newLink.size(); x++) {
                Student s = newLink.get(x);
                System.out.println(s.getName()+"---"+s.getAge());
        }
}
这里讲contains()方法的底层依赖equals()方法,如果在Student类中没有重写equals()方法,输出结果就不会剔除相同对象。这里听的不是很清楚,什么是contains()方法的底层依赖equals()方法?求大神详解?


作者: debuggerx01    时间: 2016-3-18 06:22
底层依赖问题,可以尝试先从API中查找,或者对应着看源码。
这里调用的是LinkedList的contains方法,所以你就去API查LinkedList这个类,查看他的contains方法:

这里已经告诉你调用了equals来判断,如果想知道具体的话看AbstractCollection的源码

然后就是equals方法复写的问题了,这个应该在基础课里讲的很清楚了,String为例。。

ps.我是不是装的还挺像回事儿的?其实自学基础课才刚看完Day12……

作者: lijiy09    时间: 2016-3-18 11:04
很厉害了,谢谢解答,我明白了~




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