본문 바로가기

언어/Java

[ 자바 / Java ] ArrayList 사용

반응형

ArrayList는 Java의 표준 라이브러리 중 하나로, java.util 패키지에 포함된 클래스입니다. ArrayList는 크기를 동적으로 조정할 수 있는 배열 기반의 컬렉션 클래스입니다. 이는 고정 크기의 배열보다 유연하게 데이터를 관리할 수 있게 해줍니다.

1. ArrayList의 특징

  1. 동적 크기 조절: ArrayList는 요소가 추가되거나 제거됨에 따라 자동으로 크기가 조정됩니다.
  2. 빠른 인덱스 접근: 인덱스를 통해 요소에 빠르게 접근할 수 있습니다. 배열과 유사하게 O(1) 시간 복잡도로 요소를 조회할 수 있습니다.
  3. 유연한 삽입 및 삭제: 요소의 삽입과 삭제가 간편하며, 내부적으로 요소의 이동을 관리합니다.
  4. 제네릭스 지원: ArrayList는 제네릭스를 지원하여 타입 안전성을 제공하며, 다양한 데이터 타입의 요소를 관리할 수 있습니다.
  5. 순차적 데이터 저장: 데이터는 순차적으로 저장되며, 중복된 요소도 허용됩니다.

2. ArrayList 선언과 초기화

ArrayList를 선언하고 초기화하는 방법은 다음과 같습니다.

import java.util.ArrayList;

ArrayList<데이터타입> 리스트이름 = new ArrayList<>();

예:

ArrayList<String> fruits = new ArrayList<>();
ArrayList<Integer> numbers = new ArrayList<>();

3. ArrayList 사용 예제

ArrayList를 사용하는 방법을 다양한 예제를 통해 설명하겠습니다.

1. 요소 추가

ArrayList에 요소를 추가할 때는 add 메서드를 사용합니다.

import java.util.ArrayList;

public class ArrayListAddExample {
    public static void main(String[] args) {
        ArrayList<String> fruits = new ArrayList<>();

        // 요소 추가
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Cherry");

        // 모든 요소 출력
        System.out.println("Fruits: " + fruits);
    }
}

설명:

  • ArrayList<String> 타입의 fruits 리스트를 선언하고 초기화합니다.
  • add 메서드를 사용하여 "Apple", "Banana", "Cherry"를 리스트에 추가합니다.
  • 리스트의 모든 요소를 출력합니다.

2. 특정 위치에 요소 추가

특정 위치에 요소를 추가하려면 add 메서드에 인덱스를 지정합니다.

import java.util.ArrayList;

public class ArrayListInsertExample {
    public static void main(String[] args) {
        ArrayList<String> fruits = new ArrayList<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Cherry");

        // 특정 위치에 요소 추가
        fruits.add(1, "Mango"); // 인덱스 1에 "Mango" 추가

        // 모든 요소 출력
        System.out.println("Fruits: " + fruits);
    }
}

설명:

  • add(int index, E element) 메서드를 사용하여 인덱스 1에 "Mango"를 추가합니다.
  • 리스트의 모든 요소를 출력합니다.

3. 요소 접근 및 변경

ArrayList의 특정 요소에 접근하거나 변경하려면 getset 메서드를 사용합니다.

import java.util.ArrayList;

public class ArrayListAccessExample {
    public static void main(String[] args) {
        ArrayList<String> fruits = new ArrayList<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Cherry");

        // 특정 요소 접근
        String secondFruit = fruits.get(1); // 인덱스 1의 요소 가져오기
        System.out.println("Second fruit: " + secondFruit);

        // 특정 요소 변경
        fruits.set(2, "Blueberry"); // 인덱스 2의 요소를 "Blueberry"로 변경

        // 모든 요소 출력
        System.out.println("Fruits after modification: " + fruits);
    }
}

설명:

  • get 메서드를 사용하여 인덱스 1의 요소를 가져옵니다.
  • set 메서드를 사용하여 인덱스 2의 요소를 "Blueberry"로 변경합니다.
  • 변경된 리스트의 모든 요소를 출력합니다.

4. 요소 제거

특정 인덱스의 요소나 특정 값을 가진 요소를 제거하려면 remove 메서드를 사용합니다.

import java.util.ArrayList;

public class ArrayListRemoveExample {
    public static void main(String[] args) {
        ArrayList<String> fruits = new ArrayList<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Cherry");
        fruits.add("Banana");

        // 특정 인덱스의 요소 제거
        fruits.remove(1); // 인덱스 1의 요소 제거

        // 특정 값을 가진 첫 번째 요소 제거
        fruits.remove("Banana"); // 첫 번째 "Banana" 제거

        // 모든 요소 출력
        System.out.println("Fruits after removal: " + fruits);
    }
}

설명:

  • remove(int index) 메서드를 사용하여 인덱스 1의 요소를 제거합니다.
  • remove(Object o) 메서드를 사용하여 값이 "Banana"인 첫 번째 요소를 제거합니다.
  • 리스트의 모든 요소를 출력합니다.

5. 리스트의 크기 확인

size 메서드를 사용하여 ArrayList의 현재 크기를 확인할 수 있습니다.

import java.util.ArrayList;

public class ArrayListSizeExample {
    public static void main(String[] args) {
        ArrayList<String> fruits = new ArrayList<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Cherry");

        // 리스트의 크기 출력
        System.out.println("Number of fruits: " + fruits.size());
    }
}

설명:

  • size 메서드를 사용하여 ArrayList의 크기를 확인하고 출력합니다.

6. 리스트의 요소 확인

ArrayList에 특정 요소가 있는지 확인하려면 contains 메서드를 사용합니다.

import java.util.ArrayList;

public class ArrayListContainsExample {
    public static void main(String[] args) {
        ArrayList<String> fruits = new ArrayList<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Cherry");

        // 특정 요소가 리스트에 포함되어 있는지 확인
        boolean hasBanana = fruits.contains("Banana");
        boolean hasMango = fruits.contains("Mango");

        System.out.println("Contains Banana: " + hasBanana);
        System.out.println("Contains Mango: " + hasMango);
    }
}

설명:

  • contains 메서드를 사용하여 "Banana"와 "Mango"가 리스트에 포함되어 있는지 확인합니다.
  • 확인 결과를 출력합니다.

7. 리스트의 모든 요소 순회

ArrayList의 모든 요소를 순회하며 작업을 수행하려면 for 문이나 향상된 for 문을 사용할 수 있습니다.

import java.util.ArrayList;

public class ArrayListIterationExample {
    public static void main(String[] args) {
        ArrayList<String> fruits = new ArrayList<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Cherry");

        // for 문을 사용하여 모든 요소 순회
        System.out.println("Using for loop:");
        for (int i = 0; i < fruits.size(); i++) {
            System.out.println(fruits.get(i));
        }

        // 향상된 for 문을 사용하여 모든 요소 순회
        System.out.println("Using enhanced for loop:");
        for (String fruit : fruits) {
            System.out.println(fruit);
        }
    }
}

설명:

  • for 문을 사용하여 인덱스를 통해 모든 요소를 순회합니다.
  • 향상된 for 문을 사용하여 리스트의 모든 요소를 순회합니다.

4. ArrayList의 제네릭스

ArrayList는 제네릭스를 사용하여 다양한 데이터 타입을 저장할 수 있습니다. 제네릭스를 사용하면 컴파일 타임에 타입 검사를 할 수 있어 타입 안전성을 제공합니다.

예:

import java.util.ArrayList;

public class GenericArrayListExample {
    public static void main(String[] args) {
        // Integer 타입의 ArrayList
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(10);
        numbers.add(20);
        numbers.add(30);

        // String 타입의 ArrayList
        ArrayList<String> words = new ArrayList<>();
        words.add("Hello");
        words.add("World");

        // 모든 요소 출력
        System.out.println("Numbers: " + numbers);
        System.out.println("Words: " + words);
    }
}

설명:

  • ArrayList<Integer>는 정수형 데이터를 저장합니다.
  • ArrayList<String>는 문자열 데이터를 저장합니다.
  • 각각의 리스트에 요소를 추가하고 출력합니다.

5. ArrayList의 주요 메서드

  1. add(E e): 리스트의 끝에 요소를 추가합니다
반응형