2023-02-21 화 / JAVA

권혁현·2023년 2월 21일
0

Java

목록 보기
37/44
post-thumbnail

1. 아래의 메인을 만족하는 class를 작성하시오.

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세)]

2. Set 을 이용 하여, 로또 번호를 출력 하시오.

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() + "]");
		}
	}

}

3. 출력이 아래와 같이 나오도록 하시오(필수) ⭐️

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

4. Set 호출되는 원리와 순서를 설명하시오.

  • set.add : hashcode() 집합을 만든다.

  • 해당 범위 내의 요소들을 equals() 메소드로 비교한다.

0개의 댓글