hashsettest.java
来自「java培训专题」· Java 代码 · 共 57 行
JAVA
57 行
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 + =
减小字号Ctrl + -
显示快捷键?