1.HashSet(元素不一定有序(即不一定按添加的顺序输出));数据结构是哈希表,线程是非同步的,
保证元素唯一性原理。判断元素的hashCode值是否相同
如果相同,还会继续判断元素的equals方法,是否为true
1.1
HashMap<String,String> map = new HashMap<String,String>();
Iterator<String> it = map.keySet().Iterator();//获取关键字
while( it.hasNext ){
String id = it.next(); //取出关键字
String name = map.get(id);
}
1.2 //保证元素的唯一性(不重复存入)
用HashSet集合时要重写HashCode()和equals()方法;
如;
class Student{
属性;姓名和年龄
get和set方法
Student存入HashSet集合时
要重写HashCode()和equals()方法,保证元素的唯一性
public int hashCode(){
return this.name.hashCode() + 60*age;
}
public boolean equals(Object obj){
if(!(obj instanceof Person)){
return false;
}
Student stu=(Student)obj;
//认为名字相同并且年龄一样大的两个对象是一个
return this.name.equals(stu.name) && this.age == stu.age;
}
}
方法重写之后,执行的顺序
[1]. 如果元素的hashCode值相同,才会使用equals()方法进行判断。
[2]. 如果元素的hashCode值不同,不会调用equals()方法。
保证元素唯一性原理。判断元素的hashCode值是否相同
如果相同,还会继续判断元素的equals方法,是否为true
1.1
HashMap<String,String> map = new HashMap<String,String>();
Iterator<String> it = map.keySet().Iterator();//获取关键字
while( it.hasNext ){
String id = it.next(); //取出关键字
String name = map.get(id);
}
1.2 //保证元素的唯一性(不重复存入)
用HashSet集合时要重写HashCode()和equals()方法;
如;
class Student{
属性;姓名和年龄
get和set方法
Student存入HashSet集合时
要重写HashCode()和equals()方法,保证元素的唯一性
public int hashCode(){
return this.name.hashCode() + 60*age;
}
public boolean equals(Object obj){
if(!(obj instanceof Person)){
return false;
}
Student stu=(Student)obj;
//认为名字相同并且年龄一样大的两个对象是一个
return this.name.equals(stu.name) && this.age == stu.age;
}
}
方法重写之后,执行的顺序
[1]. 如果元素的hashCode值相同,才会使用equals()方法进行判断。
[2]. 如果元素的hashCode值不同,不会调用equals()方法。