---------------------- android培训、java培训、期待与您交流! ----------------------
ArrayList:
/*ArrayList集合存储自定义对象,取出重复元素时要重写equals方法*/public boolean equals(Object obj)
{
if(!(obj instanceof Person))
return false;
Person t =(Person)obj;
return this.name.equals(t.name)&&this.age==t.age;
}
HashSet:
Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复。
HashSet:底层数据结构是哈希表。是线程不安全的。不同步。
HashSet是如何保证元素唯一性的呢?
是通过元素的两个方法,hashCode和equals来完成。
如果元素的HashCode值相同,才会判断equals是否为true。
如果元素的hashcode值不同,不会调用equals。
注意,对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法。
/*Hashset集合存储自定义对象步骤
1、复写hashcode方法;
2、复写equals方法;
*/
public int hashCode()
{
System.out.println(this.name+"....hashCode");
return name.hashCode()+age*37;
}
public boolean equals(Object obj)
{
if(!(obj instanceof Person))
return false;
Person p = (Person)obj;
System.out.println(this.name+"...equals.."+p.name);
return this.name.equals(p.name) && this.age == p.age;
}
总结:
Arraylist判断元素是否存在还有删除元素依赖的是equals。
HashSet先依赖hashcode再依赖equals。
原因在于数据结构不同依赖的方式也不同
要掌握内容:
1.用linklist模拟堆栈和队列。
2.Arraylist存储自定义对象。
3.Hashset存储自定义对象;
---------------------- android培训、java培训、期待与您交流! ----------------------