ArrayList中的contains方法学习笔记
来源:互联网 发布:网络诈骗的手段 编辑:程序博客网 时间:2024/06/05 21:57
ArrayLIst类使用contains方法时要注意:放入ArrayList中的类必须要重写equals方法(既然equals重写了,那么hash方法也应该重写,这两个方法一般同时重写);如果不重写默认用的是object类中的equals,他比较的是两个对象是否在同一个内存地址(和==作用相同),这样的话arraylist类中的contains方法就不能正常工作。举例如下:
情况一:准备放入的类不重写equals方法。
public class Test
{
private String str;
public Test(String s)
{this.str=s;}
public static void main(String[] args)
{
List list=new ArrayList();
Test t1=new Test("test");
Test t2=new Test("test");
list.add(t1);
System.out.println(t1.equals(t2));//调用的是Object类的equals方法,比较是不是在同一个内存空间
System.out.println(list.contains(t2));//arraylist对象调用contains方法时,实际使用的是从object继承而来的equals,比较是否在同一个内存空间
}
}
打印结果:
false
false
情况二:重写Test的equals方法
public class Test
{
private String str;
public boolean equals(Object o)
{
if(o==this)
return true;
if(o instancesof Test)
{
Test test=(Test)o;
return str.equals(test.str);
}
return false;
}
public Test(String s)
{this.str=s;}
public static void main(String[] args)
{
List list=new Arraylist();
Test t1=new Test("test");
Test t2=new Test("test");
list.add(t1);
System.out.println(t1.equals(t2));
System.out.println(list.contains(t2));//由于t1与t2有相同的值,那么此时list调用contains(t2)判断的是list对象中是否已有值和t2的值相同的对象
}
}
打印结果:
true
true
结果:可见Test类中,重写equals后,调用Arraylist对象的contains方法时可以正常工作。此时,list.contains(t2)方法判断的是该list对象中是否已有与t2对象的值相同的对象。
- ArrayList中的contains方法学习笔记
- ArrayList contains使用笔记
- ArrayList的Contains方法
- ArrayList的contains方法
- ArrayList的contains方法
- ArrayList.contains()方法
- ArrayList的contains方法
- ArrayList的contains方法
- 用Arraylist的contains()方法去掉文件中的重复数据
- String中的contains()方法
- ArrayList和HashSet的Contains()方法
- (转载)ArrayList的contains方法
- java ArrayList的contains方法问题
- ArrayList的contains方法,底层调用了equals方法
- 慎用ArrayList的contains方法,使用HashSet的contains方法代替
- java 慎用ArrayList的contains方法,使用HashSet的contains方法代替
- 慎用ArrayList的contains方法,使用HashSet的contains方法代替
- 慎用ArrayList的contains方法,使用HashSet的contains方法代替
- Visual Studio 的免费性能调试工具(翻译)
- Zoj 1119
- 温习《算法导论》的插入排序
- 关于java.sql.SQLRecoverableException: Closed Connection异常的解决方案
- mark 有懈怠了很久,但是有充满了激情
- ArrayList中的contains方法学习笔记
- Android APK反编译方法(可以获取APK xml和android Manifest,java代码等内容)
- Android NDK之JNI陷阱
- 2014百度校招笔试题之动态链接库&静态链接库详解
- Linux初学所遇问题
- strlen和sizeof的区别
- java开发应善于使用注释
- 使用spring jdbc template简化jdbc数据库操作实例代码
- Oracle数据库学习之数据类型和表的操作