Programing_Java

웹 장바구니 설계 : ArrayList와 Map의 차이점 분석 본문

JAVA_

웹 장바구니 설계 : ArrayList와 Map의 차이점 분석

Joyfullyever 2025. 3. 10. 21:30

#1. 장바구니 구현 방식 : ArrayList vs. Map

웹 애플리케이션에서 장바구니를 구현할 때, 두 가지 대표적인 방식이 있음

1. ArrayList<DTO> 활용

2. Map<Integer, DTO> 활용

 

#2. ArrayList<DTO>를 활용한 장바구니

// 구현 방식
List<ShoppingCartDTO> shoppingCart = new ArrayList<>();

• ShoppingCartDTO 객체를 리스트에 저장하는 방식

• 순차적으로 상품을 추가하고, 필요할 때 탐색

 

장점

 같은 DTO를 저장할 수 있음 → PK가 같아도 객체는 중복될 수 있음

 단순한 데이터 저장 구조 → List는 익숙한 자료구조

단점

 같은 상품(PK 동일)이 여러 개 저장될 가능성이 있음

 특정 상품을 찾거나 수정할 때 시간 복잡도가 발생

 재고 수량과 구매 수량을 따로 관리해야함

 

#3. Map<Integer,DTO>를 활용한 장바구니

// 구현 방식
Map<Integer, ShoppingCartDTO> shoppingCart = new HashMap<>();

• Key 값으로 상품의 PK를 사용

• Value 값으로 ShoppingCartDTO 객체 저장

 

장점

✅ 상품(PK)이 동일하면 같은 객체를 활용하여 중복 저장 방지

✅ 특정 상품을 찾을 때 빠르게 조회 가능

✅ 재고 수량과 구매 수량을 개별적으로 관리 가능

단점

❌ Map 구조에 익숙하지 않다면 처음에는 다소 복잡해 보일 수 있음

❌ 순서를 보장하지 않으므로 정렬이 필요할 수도 있음

 

#4. 방식 선택

• 단순한 장바구니 구조라면 ArrayList<DTO>가 충분

• 상품의 중복 저장을 방지하고 빠른 검색이 필요하다면 Map<Integer,DTO> 방식이 더 적합

• 최근 트렌드로는 Map을 활용하는 방식이 많이 사용됨 → Python의 dict 자료구조와 유사

방식 저장 방식 중복 허용 검색 속도 정렬
ArrayList List<DTO> O O(n) O
Map Map<PK,DTO> X O(1) X