import java.util.Set;
import java.util.HashSet;
import java.util.Random;
public class Java_09_lotto {
public static void main(String[] args) {
Set<Integer> lottoNumbers = LottoNumbers();
System.out.println("로또 번호: " + lottoNumbers);
}
public static Set<Integer> LottoNumbers() {
Set<Integer> lottoNumbers = new HashSet<>();
Random random = new Random();
while (lottoNumbers.size() < 6) {
int number = random.nextInt(45) + 1;
lottoNumbers.add(number);
}
return lottoNumbers;
}
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
*/
import java.util.HashSet;
import java.util.Set;
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 % 3;
}
@Override
public boolean equals(Object obj) {
return num == ((Num) obj).num;
}
}
public class Java_07_hashset {
public static void main(String[] args) {
Set<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();
}
}
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);
/*
============
저장된 데이터 수: 2
[LEE(10세), PARK(35세)]
*/
import java.util.HashSet;
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return name + "(" + age + "세)";
}
}
public class Java_08 {
public static void main(String[] args) {
HashSet<Person> hSet = new HashSet<>();
hSet.add(new Person("LEE", 10));
hSet.add(new Person("PARK", 35));
System.out.println("저장된 데이터 수: " + hSet.size());
for (Person person : hSet) {
System.out.println(person);
}
}
}
HashSet hSet = new HashSet();
1 : HashSet 객체 hSet을 생성 (Person 객체를 저장하기 위한 HashSet)
hSet.add(new Person("LEE", 10));
2 : "LEE" 이름과 10세의 나이를 가지는 Person 객체를 생성하여 hSet에 추가
3 : 앞서 "LEE" 이름과 10세의 나이를 가지는 Person 객체와 동일한 속성을 가진 Person 객체를 생성하여 hSet에 추가한다. (HashSet은 중복된 객체를 허용하지 않으므로, 이 객체는 추가x )
hSet.add(new Person("PARK", 35));
4 : "PARK" 이름과 35세의 나이를 가지는 Person 객체를 생성하여 hSet에 추가
5 : 앞서 "PARK" 이름과 35세의 나이를 가지는 Person 객체와 동일한 속성을 가진 Person 객체를 생성하여 hSet에 추가한다. (이 객체도 중복되므로 추가되지 않음)
System.out.println("저장된 데이터 수: " + hSet.size());
6 : hSet의 크기를 출력한다. size() 메서드는 hSet에 저장된 요소의 개수를 반환한다. (중복된 객체가 제외되어 출력 : 2 )
System.out.println(hSet);
7 : hSet을 출력한다.
HashSet 클래스는 toString() 메서드를 오버라이드하여 객체 내용을 문자열로 반환하므로, hSet의 내용이 [LEE(10세), PARK(35세)]와 같은 형태로 출력된다.