Day 19

·2023년 7월 3일
0

Global_2023_2

목록 보기
18/56

1.hash 의 특징은?

  • "hash code는 분류다"

    • equals와 hashCode의 기준으로 동일 판단
    1. hash는 주소(가짜주소)

      • 개념 : 임의의 길이 데이터를 고정된 길이로 변환
      • 단방향 암호화 : 복호화가 불가능
      • 충돌이 일어나면 곤란함
    2. hashCode 함수

      • native가 붙으면 C나 C++를 불러옴
      • toString에 사용됨(주소)
      • Integer 결과값이 나옴(4byte)
      • 64비트-> 암호화알고리즘-> 32비트
        (C언어에선 포인터로 한번에 변경해서 해킹에 취약)
      • 아무리 좋은 알고리즘도 충돌이 있다(OS64/JVM32비트라서)

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

Set<Integer> lotto = new HashSet<>();
while(lotto.size() != 6) {
int num = (int)(Math.random()*45)+1;	
lotto.add(num);	}
System.out.println(lotto);	

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

  • set <E>
    • 집합 구현 (순서X, 중복X)
    • 중복은 먼저 나온걸 없애고 나중에 나온게 들어간다

1 에서 이어짐

  1. set에서 hashCode 활용
  • 예시 : 주민등록번호 = 9는 9로 나눠서 나머지 0인걸로
    0,1,2 나눠서 분류, 속도를 올림
    (전부 일일히 확인하는것보다 최소 1/3 빠름)

    • 중복의 기준 : 개발자가 정함 (약속된 로직대로)

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

    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
/

class Num {
int num;

Num(int num) {
	this.num = num;
}

@Override
public String toString() {
	return String.valueOf(num);
}

@Override
public int hashCode() {
	return num % 2;
}

@Override
public boolean equals(Object obj) {
	if(this.num == ((Num)obj).num)
		return true;
	else 
		return false;
}}public class HashNum {

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

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

HashSet hSet = new HashSet();
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세)]
/

 1. hashcode 호출, 분류(집합만듦)
  2. equals 호출(add 안에<데이터를 집어넣을때>)

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

  • Queue <e>
  • LIFO(last-in-first-out) <Call 스택>
    <처음 들어간게 깔려서 제일 마지막>
  • FIFO(first-int-first-out) <큐> (선입선출)
    <처음 들어간게 뚫린 곳으로 바로 나감>

Database는 신입이 무조건 한다🗄


Point

  • iterator : 리모컨

  • for문에서 증감이 없으면 앞으로

  • 리스트 : 순서있고 중복 가능

  • 컬렉션 프레임워크는 다 ポリモーフィズム으로 이어져있다

  • Treeset

    • 나무 구조로 반 / 반 / 반 넘어가서 속도가 빠름

0개의 댓글