[면접예상] 20230703

neul·2023년 7월 3일
1

면접예상

목록 보기
18/36
post-thumbnail

🦦hash 의 특징은?

  • 가짜 주소 만드는 범인
  • 해시코드 함수 hashcode()
  • set에서의 해시보드 활용

🦦로또 프로그램을 작성하시오.(Set 으로)

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;
    }

🦦Set에 대하여 설명하시오.

  • 저장순서가 유지되지 않음
  • 데이터의 중복 저장을 허용하지 않음

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

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

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

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세)]와 같은 형태로 출력된다.

🦦큐와 스택에 대하여 설명하시오.(필수)

profile
🍙

0개의 댓글

관련 채용 정보