import java.util.*;
class Person{
private String name;
private int age;
Person(String name, int age){
this.name = name;
this.age = age;
}
}
class JavaPractice {
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.out.println("저장된 데이터 수: " + hSet.size());
System.out.println(hSet);
}
}
[Console]
저장된 데이터 수: 4
[Person@762efe5d, Person@5d22bbb7, Person@41a4555e, Person@4926097b]
클래스 안에 toString() 추가
@Override
public String toString() {
return (name + ", " + age + "살입니다.");
}
[Console]
저장된 데이터 수: 4
[LEE, 10살입니다., PARK, 35살입니다., PARK, 35살입니다., LEE, 10살입니다.]
클래스 안에 hashCode(), equals(Object 매개변수) 추가
@Override
public int hashCode() {
return age;
}
@Override
public boolean equals(Object p) {
if (((this.name).equals((Person) p).name) && (this.age == ((Person) p).age)) {
return true;
} else
return false;
}
[Console]
저장된 데이터 수: 2
[LEE, 10살입니다., PARK, 35살입니다.]
@Override
public boolean equals(Object obj) {
if(obj instanceof Person) {
Person p = (Person)obj;
if((this.age == p.age) && (this.name.equals(p.name))){
return true;
}
}
return false;
}
import java.util.*;
class Num{
private int num;
public Num(int num) {
this.num = num;
}
}
public class JavaTest extends Object {
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();
}
}
[Console]
인스턴스 수: 3
Num@762efe5d Num@5d22bbb7 Num@4926097b
import java.util.*;
class Num {
private int num;
public Num(int num) {
this.num = num;
}
@Override
public String toString() {
return ("" + num);
/*
int를 String으로 강제 형 변환이 되지 않으므로,
강제로 문자열을 삽입하여 String으로 출력할 수 있도록 한다.
*/
}
@Override
public int hashCode() {
return num % 3;
} // 임의로 지정해준다
@Override
public boolean equals(Object o) {
if (this.num == ((Num) o).num) {
return true;
} else
return false;
}
}
public class JavaTest extends Object {
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();
}
}
[Console]
인스턴스 수: 2
9955 7799
import java.util.*;
class JavaPractice {
public static void main(String[] args) {
HashSet<Integer> lotto = new HashSet<Integer>();
// 처음 크기는 0이며, 개수는 6개만 받아오면 된다.
while (lotto.size() < 6) {
int random = (int) (Math.random() * 45) + 1;
lotto.add(random);
/*
랜덤 숫자를 set에 추가한다.
중복된 요소는 추가되어도 바로 새 요소로 교체되므로,
중복 제거를 거치지 않아도 된다.
*/
}
for (int num : lotto) {
System.out.print(num + " ");
}
}
}
import java.util.*;
class Lotto {
HashSet<Integer> lotto;
public Lotto() {
lotto = new HashSet<Integer>();
}
public void generateLotto() {
while (lotto.size() < 6) {
int random = (int) (Math.random() * 45) + 1;
lotto.add(random);
}
}
public void showLotto() {
for (int num : lotto) {
System.out.print(num + " ");
}
}
}
class JavaPractice {
public static void main(String[] args) {
Lotto a = new Lotto();
a.generateLotto();
a.showLotto();
}
}