Java - 리스트와 맵 비교

민찬홍·2023년 10월 29일

Java

목록 보기
27/31
post-thumbnail

🧩 리스트와 맵 비교

리스트

  • 장점 :
    • 데이터를 순차적으로 저장하고 접근하는 데 용이하다.
    • 인덱스를 사용하여 데이터에 빠르게 접근할 수 있다.
  • 단점 :
    • 요소를 찾을 때 선형 검색을 해야 하므로 검색이나 삭제 연산이 비효율적일 수 있다.
    • 데이터를 식별하는 키가 없으므로 데이터를 찾는 데 제한적이다.

  • 장점 :
    • 데이터를 키-값 쌍으로 저장하여 빠르게 검색할 수 있다.
    • 키를 사용하여 빠르게 데이터에 접근할 수 있다.
  • 단점 :
    • 데이터를 순차적으로 저장하는 데는 제한적이므로 리스트보다는 데이터를 추가하거나 업데이트하는 과정이 복잡할 수 있습니다.

☕️ 예시코드

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Main {
    public static void main(String[] args) {  // 메인 함수 시작
        System.out.println("== List ==");
        List<Integer> ages = new ArrayList<>();

        // 데이터 넣을 때는 편하다.(자동라벨링)
        ages.add(10); // 철수나이
        ages.add(20); // 영희나이
        ages.add(30); // 영수나이
        ages.add(1, 40); // 철희나이
        ages.remove(0); // 철수 나이 삭제

        // 데이터 가져올 때는 불편하다.(라벨(index, 번호)가 어떻게 바뀔 지 모르기 때문)
        System.out.println("철희나이 : " + ages.get(0)); // 철희나이는 최종적으로 0번(index)에 저장되어 있음

        System.out.println("== Map ==");

        // 데이터 넣을 때는 불편하다.(수동라벨링)
        Map<String, Integer> agesMap = new HashMap<>();
        agesMap.put("철수", 10);
        agesMap.put("영희", 20);
        agesMap.put("영수", 30);
        agesMap.put("철희", 40);

        agesMap.remove("철수");
        agesMap.get("영수");

        // 데이터 가져올 때는 편하다.(라벨(index, 번호)가 절대 안바뀜)
        System.out.println("철희나이 : " + agesMap.get("철희"));
    }
}

결론

  • 리스트는 데이터를 추가하거나 접근할 때 인덱스를 사용하여 바르게 처리할 수 있지만, 특정 요소를 찾거나 삭제할 떄는 선형검색을 해야 하므로 비효율적일 수 있다.

  • 반면에 맵은 데이터를 키-값 쌍으로 저장하여 빠르게 검색할 수 있지만, 데이터를 저장할 때 키와 값을 모두 제공해야 하므로 추가나 업데이트하는 과정이 복잡할 수 있다.

profile
백엔드 개발자를 꿈꿉니다

0개의 댓글