黑马程序员技术交流社区
标题:
关于ArrayList问题的提问 求解决谢谢!
[打印本页]
作者:
微笑=.一瞬间
时间:
2014-4-8 21:21
标题:
关于ArrayList问题的提问 求解决谢谢!
程序:
import java.util.*;
class MyTestArratList
{
public static void main(String[] args)
{
ArrayList al=new ArrayList();
al.add("java1");
al.add("java2");
al.add("java3");
al.add("java4");
al.add("java1");
Iterator it=al.iterator();
ArrayList newAl=new ArrayList();
while(it.hasNext())
{
Object obj=it.next();
if(!newAl.contains(obj))
{
newAl.add(obj);
System.out.println(obj);
}
}
}
}
请问if语句contains方法调用的String类中的equals方法还是Object类中的equals方法呢?
作者:
Lin0411
时间:
2014-5-2 09:34
调用的是String中的equals方法!!
因为it.next()取出的是String对象,此对象覆盖了父类Object中的equals方法,根据java面向对象的多态特性,
以及set.contains(Object o)方法根据set中的每个元素e的e.equals(o)的值返回相应的真假值,例子中,每个e均为String类对象,虽然o被指为Objdect对象,但并没有进行Object的强制转换,根据多态性,o被加入到集合中后,在下次比较调用它的equals方法时调用的仍是String中的euqals方法。
作者:
贾俊锋
时间:
2014-5-21 01:31
学习了,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2