public class Study48 {
public static void main(String[] args) {
HashSet<Person> hSet = new HashSet<Person>();
hSet.add(new Person("LEE", 10));
hSet.add(new Person("LEE", 10));
hSet.add(new Person("PARK", 35));
hSet.add(new Person("PARK", 35));
System.onut.println("저장된 데이터 수: " + hSet.size());
System.out.println(hSet);
}
}
class Person{
private String name;
private int age;
public Person(String n, int a) {
name = n;
age = a;
}
@Override
public String toString() {
String.valueOf(age);
String.valueOf(name);
return name + "(" + age + "세)";
}
@Override
public int hashCode() {
return age % 2;
}
@Override
public boolean equals(Object obj) {
if (age == ((Person)obj).age && name.equals(((Person)obj).name))
return true;
else
return false;
}
}
저장된 데이터 수: 2
[LEE(10세), PARK(35세)]
import java.util.HashSet;
class Num2 {
private int num;
public Num2(int n) {
num = n;
}
@Override
public String toString() {
return String.valueOf(num);
}
@Override
public int hashCode() {
return num % 6;
}
@Override
public boolean equals(Object obj) {
if (num == ((Num2) obj).num)
return true;
else
return false;
}
}
public class Study49 {
public static void main(String[] args) {
HashSet<Num2> set = new HashSet<>();
while (set.size() < 6) {
set.add(new Num2((int) (Math.random() * 45) + 1));
}
for (Num2 n : set) {
System.out.print("[" + n.toString() + "]");
}
}
}
class Num {
private int num;
public Num(int n) {
num = n;
}
@Override
public String toString() {
return String.valueOf(num);
}
@Override
public int hashCode() {
return num % 2;
}
@Override
public boolean equals(Object obj) {
if (num == ((Num) obj).num)
return true;
else
return false;
}
}
public class Study47 {
public static void main(String[] args) {
HashSet<Num> set = new HashSet<>();
set.add(new Num(7799));
set.add(new Num(9955));
set.add(new Num(7799));
System.out.println("인스턴스 수: " + set.size());
for(Num n : set)
System.out.print(n.toString() + '\t');
System.out.println();
}
}
인스턴스 수: 2
7799 9955
set.add : hashcode() 집합을 만든다.
해당 범위 내의 요소들을 equals() 메소드로 비교한다.