Skip to content

Conversation

programofktw
Copy link
Owner

#️⃣ 어떤 브랜치인가요?

  • basic
  • baekjoon
  • other:

📝 구현 설명 (Describe)

ListMap?

실제 있는 개념인지는 모르겠지만 Map의 가장 간단한 구조 구현

Key 와 Value 의 쌍을 갖는 Node를 List 형식으로 저장하고 관리하며 이떄 List 형식은 이전에 구현한 ArrayList 를 사용.

구현 방식

핵심 메서드는

  • put() : Create, Update 담당
  • get() : Read 담당
  • containsKey() : 편의성 담당
  • remove() : Delete 담당
    으로 이루어져 있으며

모든 과정에서 각 과정에서 동일한 Key 값에 대한 내용이 들어있는 ListIndex 탐색을 위해

    private int findIndexByKey(K key){
        checkNullKey(key);
        for(int i =0 ;i<list.getSize();i++){
            if(list.get(i).key.equals(key)){
                return i;
            }
        }
        return -1;
    }

의 메서드를 실행

덕분의 모든 과정에서 List의 완전 탐색이 일어나 O(N)이라는 시간복잡도가 추가되게 됨.

현재 구현상 문제점

  1. 시간 복잡도
    • 선형탐색으로 항상 O(N)의 시간이 강제되어 Node 의 개수가 증가함에 따라 성능이 안좋아짐.
    • 중복 키 처리에서도 비율적(equals 로 객체간의 비교를 진행해 hashCode로 비교하는 것보다 비효율적)
    • HashMap 이나 TreeMap형식으로 구현할 필요 존재
  2. null 키 허용 안함
    • 이거는 개발자가 결정할 문제라고 판단
  3. 정렬 기능 없음
    • 키 정렬이나 삽입 순서 보존 불가
  4. 공간 효율성 떨어짐
    • Node 객체가 key-value를 감싸기 때문에 오버헤드 존재, ArrayList를 사용하여 불필요한 공간 차지.
  5. thread-safe 하지 않음
    • Sync 처리해주지 않아서 동시성 문제 발생 가능성 있음.

@programofktw programofktw self-assigned this Jul 8, 2025
@programofktw programofktw merged commit 6e8f241 into main Jul 8, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant