IMCAT.DEV
로그인 가입
Java 입문 자료구조

Java 컬렉션 기본 개념

Java 컬렉션 기본 개념 — 초급

컬렉션 기본 개념

1. 도입 (왜 배워야 하는가)

Java의 컬렉션 프레임워크는 데이터를 그룹화하고 관리하는 데 필수적인 도구입니다. 예를 들어, 쇼핑몰에서 고객의 장바구니를 구현할 때, 여러 상품을 저장하고 관리해야 합니다. 이때 컬렉션을 사용하지 않으면 매번 배열을 만들고 크기를 조정하는 번거로운 작업을 해야 하며, 데이터의 추가, 삭제, 검색 등의 작업이 매우 복잡해질 수 있습니다.

컬렉션을 모르면 프로그램의 성능과 유지보수성이 떨어질 수 있으며, 코드가 복잡하고 비효율적으로 변할 위험이 큽니다. 따라서 컬렉션을 이해하고 활용하는 것은 Java 프로그래머에게 매우 중요합니다.

2. 핵심 개념 설명

컬렉션은 여러 데이터를 저장하고 관리하는 구조를 의미합니다. 주로 사용할 수 있는 컬렉션의 종류는 다음과 같습니다:

컬렉션 종류설명
List순서가 있는 데이터 집합, 중복 허용
Set순서가 없고 중복을 허용하지 않는 데이터 집합
Map키-값 쌍으로 데이터를 저장, 키는 중복 불가

비유

  • List는 학교의 학생 명단과 같습니다. 학생들이 배열된 순서가 있고, 같은 이름을 가진 학생이 여러 명 있을 수 있습니다.
  • Set는 친구 목록처럼 생각할 수 있습니다. 중복된 친구는 필요하지 않으므로, 각 친구는 한 번만 나타납니다.
  • Map은 전화번호부와 비슷합니다. 이름(키)은 중복될 수 없고, 각 이름에 해당하는 전화번호(값)가 있습니다.
  • 3. 기본 코드 예제

    아래는 List를 사용하는 기본적인 예제입니다.

    import java.util.ArrayList;
    import java.util.List;
    
    public class CollectionExample {
        public static void main(String[] args) {
            // List 생성
            List<String> fruits = new ArrayList<>();
            
            // 데이터 추가
            fruits.add("사과");
            fruits.add("바나나");
            fruits.add("포도");
    
            // 데이터 출력
            for (String fruit : fruits) {
                System.out.println(fruit);
            }
        }
    }

    실행 결과

    사과
    바나나
    포도

    코드 한 줄씩 동작 설명

    1. import java.util.ArrayList; - ArrayList 클래스를 사용하기 위해 import합니다.
    2. List<String> fruits = new ArrayList<>(); - String 타입의 List를 생성합니다.
    3. fruits.add("사과"); - "사과"를 List에 추가합니다.
    4. fruits.add("바나나"); - "바나나"를 List에 추가합니다.
    5. fruits.add("포도"); - "포도"를 List에 추가합니다.
    6. for (String fruit : fruits) { ... } - List에 있는 모든 과일을 출력합니다.
    7. 4. 실전 활용 예제

      예제 1: 쇼핑몰 장바구니 구현

      import java.util.ArrayList;
      import java.util.List;
      
      public class ShoppingCart {
          public static void main(String[] args) {
              List<String> cart = new ArrayList<>();
              
              // 장바구니에 상품 추가
              cart.add("신발");
              cart.add("티셔츠");
              cart.add("바지");
      
              // 장바구니 내용 출력
              System.out.println("장바구니: " + cart);
          }
      }

      예제 2: 친구 목록 관리

      import java.util.HashSet;
      import java.util.Set;
      
      public class FriendsList {
          public static void main(String[] args) {
              Set<String> friends = new HashSet<>();
              
              // 친구 추가
              friends.add("철수");
              friends.add("영희");
              friends.add("철수"); // 중복 추가 시 무시됨
      
              // 친구 목록 출력
              System.out.println("친구 목록: " + friends);
          }
      }

      5. 흔한 실수와 주의사항

      실수 1: 컬렉션 타입을 잘못 사용하기

    8. 잘못된 코드
    9. List<String> numbers = new ArrayList<>();
      numbers.add(1); // 컴파일 오류 발생
    10. 올바른 코드
    11. List<Integer> numbers = new ArrayList<>();
      numbers.add(1); // 정상 작동
    12. 설명: List<String>에 int 타입을 추가하면 오류가 발생합니다. 타입을 올바르게 지정해야 합니다.
    13. 실수 2: NullPointerException

    14. 잘못된 코드
    15. List<String> list = null;
      list.add("사과"); // NullPointerException 발생
    16. 올바른 코드
    17. List<String> list = new ArrayList<>();
      list.add("사과"); // 정상 작동
    18. 설명: null인 컬렉션에 접근하면 NullPointerException이 발생합니다. 항상 초기화 후 사용해야 합니다.
    19. 6. 정리

    20. 컬렉션은 데이터를 그룹화하고 관리하는 데 필수적입니다.
    21. List, Set, Map 등의 다양한 컬렉션 타입이 있으며 각기 다른 용도로 사용됩니다.
    22. 실전에서는 장바구니, 친구 목록 등을 구현할 때 컬렉션을 활용합니다.
    23. 컬렉션을 사용할 때는 타입과 초기화에 주의해야 합니다.
    24. 다음에 학습하면 좋은 주제

    25. Java Stream API: 데이터 처리 및 변환
    26. 고급 컬렉션: Concurrent Collections, Collections Utility 클래스
    27. 객체 지향 프로그래밍: 클래스와 객체의 관계