JAVA의 List

 

 

List

Java list은 객체 컬렉션을 처리하고 조작하기 위한 클래스 및 인터페이스 세트를 제공하는 Java 컬렉션 프레임워크에 속하는 기본 인터페이스입니다. Java의 컬렉션은 개체 그룹을 보유하는 컨테이너이며 List 인터페이스는 특히 중복 값을 허용하는 정렬된 요소 컬렉션을 나타냅니다.
List 인터페이스의 주요 특징은 다음과 같습니다.

 

 

정렬된 컬렉션

‘list’의 요소는 특정 순서로 저장되며 이 순서는 list의 수명 내내 유지됩니다. 첫 번째 요소의 경우 0부터 시작하여 인덱스로 요소에 액세스할 수 있습니다.

 

중복 허용

다른 컬렉션 유형과 달리 list에는 중복 요소가 포함될 수 있습니다. 이는 동일한 값을 여러 번 저장해야 할 때 특히 유용합니다.

 

동적 크기 조정

Java의 ‘List’는 요소가 추가되거나 제거될 때 자동으로 크기를 조정합니다. 크기를 미리 지정할 필요는 없습니다.


List 인터페이스는 list의 내용을 조작할 수 있는 일련의 메소드를 정의합니다. 몇 가지 중요한 방법은 다음과 같습니다.

  • add(E 요소): list 끝에 요소를 추가합니다.
  • add(int index, E element): 지정된 인덱스에 요소를 삽입합니다.
  • remove(int index): 지정된 인덱스에 있는 요소를 제거합니다.
  • get(int index): 지정된 인덱스에 있는 요소를 검색합니다.
  • size(): list의 요소 수를 반환합니다.
  • isEmpty(): list이 비어 있는지 확인합니다.
  • contains(Object obj): list에 특정 요소가 포함되어 있는지 확인합니다.

 

다음은 List인터페이스의 예제입니다.

import java.util.ArrayList;
import java.util.List;

public class ListExample {
    public static void main(String[] args) {
        // Create an ArrayList to store names
        List<String> namesList = new ArrayList<>();

        // Adding elements to the list
        namesList.add("Alice");
        namesList.add("Bob");
        namesList.add("Charlie");
        namesList.add("David");
        namesList.add("Alice"); // Adding a duplicate element

        // Displaying the list
        System.out.println("Names List: " + namesList);

        // Accessing elements by index
        String thirdName = namesList.get(2);
        System.out.println("Third name: " + thirdName);

        // Checking if a specific element exists
        boolean containsAlice = namesList.contains("Alice");
        System.out.println("Contains Alice? " + containsAlice);

        // Removing an element
        namesList.remove(1); // Removes "Bob"
        System.out.println("Updated Names List: " + namesList);

        // Getting the size of the list
        int listSize = namesList.size();
        System.out.println("Number of names: " + listSize);

        // Checking if the list is empty
        boolean isEmpty = namesList.isEmpty();
        System.out.println("Is the list empty? " + isEmpty);
    }
}

 

List 인터페이스

Java 표준 라이브러리의 여러 클래스는 List 인터페이스를 구현합니다. 가장 일반적으로 사용되는 구현은 다음과 같습니다.

 

ArrayList

동적 배열을 지원하는 ArrayList는 인덱스별로 요소에 대한 빠른 액세스를 제공합니다. 자주 요소에 액세스해야 하는 시나리오에 적합합니다.

 

LinkedList

이중 연결 list으로 구현된 LinkedList는 list의 양쪽 끝에서 빠른 삽입 및 제거를 제공합니다. 삽입 및 제거가 자주 발생하는 시나리오에 적합합니다.

 

벡터(Vector)

ArrayList와 유사하지만 동기화된 메서드를 사용하므로 스레드로부터 안전합니다. 동기화의 성능 오버헤드로 인해 덜 일반적으로 사용됩니다.

 

스택(Stack)

Vector의 하위 클래스인 Stack은 해당 요소에 대한 LIFO(후입선출) 동작을 구현합니다.

 

어떤 List 구현을 사용할지는 애플리케이션의 특정 요구 사항에 따라 선택됩니다. 예를 들어 빠른 무작위 액세스가 필요한 경우 ArrayList가 더 나은 선택일 수 있습니다. 자주 삽입하고 제거해야 하는 경우 LinkedList가 더 적합할 수 있습니다.

 

 

 

요약하자면, Java ‘List’ 인터페이스는 다양한 사용 시나리오에 맞춰 다양한 구현을 통해 정렬된 요소 컬렉션을 관리하는 유연하고 강력한 방법을 제공합니다. 해당 메소드를 사용하면 간단한 방식으로 요소를 추가, 제거, 검색 및 조작할 수 있습니다.