Programing_Java
웹 장바구니 설계 : ArrayList와 Map의 차이점 분석 본문
#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 |
'JAVA_' 카테고리의 다른 글
[FrontController] JSP에서 서블릿으로의 전환: FrontController 패턴 적용하기 (0) | 2025.03.20 |
---|---|
[Listener, Filter] Spring에서 필수적으로 알아야 할 서블릿, 리스너, 필터의 역할과 차이점 (0) | 2025.03.19 |
[Controller] 팩토리 패턴을 활용한 액션 관리 및 메모리 절약법 (0) | 2025.03.09 |
JAVA#25 _ Servlet (0) | 2025.02.23 |
JAVA#24 _ 키워드와 회원탈퇴 (0) | 2025.02.18 |