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

Java 기본 자료구조 (ArrayList)

Java 기본 자료구조 (ArrayList) — 초급

기본 자료구조 (ArrayList)

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

Java의 ArrayList는 동적 배열을 구현한 클래스입니다. 이는 데이터의 크기가 고정되지 않아도 되는 유연한 배열 구조를 제공하여, 데이터를 저장하고 관리하는 데 매우 유용합니다. 실무에서는 대량의 데이터를 처리하거나 사용자 입력을 관리할 때 자주 사용됩니다. 예를 들어, 쇼핑몰 애플리케이션에서 사용자 장바구니의 아이템을 관리할 때 ArrayList를 사용하면, 사용자가 추가하거나 제거할 때마다 배열의 크기를 조정할 필요 없이 유동적으로 데이터를 관리할 수 있습니다.

ArrayList를 모르면 데이터의 추가, 삭제, 검색 등의 작업을 효율적으로 처리하는 데 어려움을 겪을 수 있습니다. 이는 결과적으로 애플리케이션의 성능 저하와 사용자 경험의 악화로 이어질 수 있습니다.

2. 핵심 개념 설명

  • ArrayList: 자바에서 제공하는 동적 배열 클래스입니다. 배열과 같은 인덱스를 사용하여 요소에 접근할 수 있으며, 크기가 자동으로 조정됩니다.
  • 동적 배열: 사용자가 배열의 크기를 명시적으로 지정할 필요 없이, 필요에 따라 자동으로 크기를 조정하는 배열입니다.
  • 관련 용어 정리

    용어설명
    인덱스배열의 각 요소에 접근하기 위한 숫자입니다.
    요소배열에 저장된 데이터의 개별 항목입니다.
    크기배열에 저장된 요소의 개수입니다.

    3. 기본 코드 예제

    다음은 ArrayList의 기본 사용법을 보여주는 코드입니다.

    import java.util.ArrayList;
    
    public class Main {
        public static void main(String[] args) {
            // ArrayList 생성
            ArrayList<String> fruits = new ArrayList<>();
    
            // 요소 추가
            fruits.add("사과");
            fruits.add("바나나");
            fruits.add("오렌지");
    
            // 요소 출력
            System.out.println(fruits);
    
            // 특정 인덱스의 요소 가져오기
            String firstFruit = fruits.get(0);
            System.out.println("첫 번째 과일: " + firstFruit);
    
            // 요소 삭제
            fruits.remove("바나나");
            System.out.println("바나나 삭제 후: " + fruits);
        }
    }

    실행 결과

    [사과, 바나나, 오렌지]
    첫 번째 과일: 사과
    바나나 삭제 후: [사과, 오렌지]

    코드 한 줄씩 동작 설명

    1. ArrayList<String> fruits = new ArrayList<>();: 문자열을 저장할 수 있는 ArrayList를 생성합니다.
    2. fruits.add("사과");: "사과"라는 요소를 ArrayList에 추가합니다.
    3. fruits.add("바나나");: "바나나"라는 요소를 추가합니다.
    4. fruits.add("오렌지");: "오렌지"라는 요소를 추가합니다.
    5. System.out.println(fruits);: 현재 ArrayList의 모든 요소를 출력합니다.
    6. String firstFruit = fruits.get(0);: 인덱스 0에 위치한 요소(첫 번째 과일)를 가져옵니다.
    7. System.out.println("첫 번째 과일: " + firstFruit);: 가져온 첫 번째 과일을 출력합니다.
    8. fruits.remove("바나나");: "바나나"라는 요소를 ArrayList에서 삭제합니다.
    9. System.out.println("바나나 삭제 후: " + fruits);: 삭제 후의 모든 요소를 출력합니다.
    10. 4. 실전 활용 예제

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

      사용자가 장바구니에 아이템을 추가하고 제거할 수 있는 기능을 구현할 때 ArrayList를 사용할 수 있습니다.

      ArrayList<String> cart = new ArrayList<>();
      cart.add("티셔츠");
      cart.add("바지");
      cart.remove("티셔츠");
      System.out.println(cart);

      예제 2: 학생 목록 관리

      학생들의 이름을 저장하고, 특정 학생의 이름을 출력하는 프로그램입니다.

      ArrayList<String> students = new ArrayList<>();
      students.add("김철수");
      students.add("이영희");
      System.out.println("학생 목록: " + students);

      5. 흔한 실수와 주의사항

      실수 1: 인덱스 범위 초과

      String fruit = fruits.get(5); // 인덱스 범위를 초과하여 오류 발생

      올바른 코드:

      String fruit = fruits.get(0); // 인덱스 0은 존재

      실수 2: null 요소 추가

      ArrayList에 null을 추가할 수 있으나, 이를 잘못 사용하면 NullPointerException이 발생할 수 있습니다.
      fruits.add(null); // null 추가
      String fruit = fruits.get(3); // 예외 발생

      올바른 코드:

      fruits.add("사과");

      6. 정리

    11. ArrayList는 동적 배열로, 데이터의 크기가 유동적인 상황에서 유용하다.
    12. 인덱스를 사용하여 요소에 접근할 수 있으며, 크기가 자동으로 조정된다.
    13. 실무에서 가장 많이 사용되는 데이터 관리 방식 중 하나이다.
    14. 다음에 학습하면 좋은 주제

    15. LinkedList: ArrayList와의 차이점 및 사용 사례
    16. HashMap: 키-값 쌍으로 데이터를 저장하는 방법
    17. Java 컬렉션 프레임워크의 다른 클래스들 (Set, Queue 등)