본문 바로가기
5.1 대외활동/Likelion(12기 세션자료)

[Eulji_LikeLion_2024_BackEnd] 4차 Q&A HashMap,Singleton

by Dohi._. 2024. 4. 18.
728x90

 

 

4차 Q&A

  Q4-1 HashMap이 뭔가요

    1) Hash..? Map?  HashMap?

 

  Q4-2 Singleton(싱글톤)

    1) Singleton

 

Q 4-1. HashMap  

1) Hash..? Map?  HashMap?

HashMap은 말 그대로 hashing 되는 Map 입니다

그럼 우선 Map와 Hash에 대해서 간단하게 설명하고 넘어 가겠습니다.

 

우선 Map은 Key와 Value 한쌍으로 이루어진 자료형이다.

키(key)를 통해 값(Value)를 찾는 자료구조이며 키(Key)는 유일성이 보장되어야 하고 값(Value)는 중복이 가능하다.

 

Hash는 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것

  • 해시 알고리즘을 해시 함수라고 부르며, 해시 함수로 변환된 값이나 키를 해시값 또는 해시키라고 부름
  • 데이터의 암호화, 무결성 검증을 위해 사용될 뿐만 아니라 정보보호의 다양한 분야에서 활용
  • 해시 함수의 종류에는 SHA 시리즈, MD5, HAS-160등이 있음

HashMap은 Key와 Value를 한쌍으로 이루어진 Map에서 키(key)를 주면 해시 함수에 의해 해시코드로 변환되고

해당 해시코드을 이용하여  값이  존재하는 버킷의 인덱스 역할을 하게 된다. 해당 버킷을 찾아가면 값을 삽입 및 조회할 수 있다.

 

 

Q 4-2. Singleton (싱글톤)

1) Singleton

싱글톤은 소프트웨어 디자인 패턴에서 생성패턴중 하나입니다.

생성자가 여러 차례 호출이 되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 생성한 객체를 리턴한다.

 

즉, 싱글톤 패턴은 객체의 인스턴스를 한개만 생성하는 패턴으로 1대다형태이다.

 

싱글톤 패턴은 아래와 같은 상황에 사용을 합니다.

  • 프로그램 내에서 하나의 객체만 존재해야 한다.
  • 프로그램 내에서 여러 부분에서 해당 객체를 공유하여 사용해야한다.

이해가 어려우니 한번 예제 코드를 드리고 출력 결과를 확인 해보세요!

import java.util.*;
import java.lang.*;
import java.io.*;

class Singleton{
    private static Singleton _inst =null;
    private int count = 0;

     public static Singleton make(){
        if(_inst == null){
            _inst = new Singleton();
            return _inst;
        }
        return _inst;
    }

    public void count(){count++;}
    public int getCount(){return count;}
    
}
class Main {
    public static void main(String[] args) {
        Singleton single1 = Singleton.make(); //new를 안해도 되는 이유 이미 해당 메소드를 Static으로 선언
        single1.count();
        Singleton single2 = Singleton.make();
        single2.count();
        Singleton single3 = Singleton.make();
        single3.count();
        single1.count();
        System.out.print(single3.getCount());  //모든 Singleton객체들은 한개의 객체를 공유하고 있다.
    }
}

출력결과  (코드 돌려보기)

4

 

 

 


이 글은 을지대학교 백엔드 세션 강의를 위해 제작된 게시글입니다 
언제나 조언부탁드립니다

 

 

728x90

댓글