📄 hashsettest.java
字号:
package util;
import java.util.*;
public class HashSetTest {
public static void main(String[] args) {
HashSet hs=new HashSet();
hs.add(new Stu(1,"zhangsan"));
hs.add(new Stu(2,"wangwu"));
hs.add(new Stu(3,"lishi"));
hs.add(new Stu(1,"zhangsan"));
Iterator it=hs.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
/*
*HashSet在存储元素的时候,会根据对象的散列码来计算它的存储位置,而这个散列
*码是根据Object类中的hashCode()函数来获取的,而hashCode()是根据对象的内存
*地址来得到一个散列码.因为是通过new来产生的对象,因而对象是不同的.因此对于要存到像散
*列表这样的一个类HashSet当中的每一个元素,应该实现hashCode()这个方法,同时还要实现
*equals()方法.
*/
//------------------------------------------------------
/*
hs.add("one");
hs.add("two");
hs.add("three");
hs.add("one");
Iterator it=hs.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
*/
//------------------------------------------------------
}
}
class Stu{
int num;
String name;
public Stu(int num, String name) {
this.num = num;
this.name = name;
}
public String toString(){
return num+":"+name;
}
public int hashCode(){
return num*name.hashCode();//如果num有唯一性可以区别,则只返回num即可.
}
public boolean equals(Object o){
Stu s=(Stu)o;
return name.equals(s.name)&&s.num==num;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -