JAVA/기초

[Java] Collection - List

안양큰스님 2024. 3. 4. 22:58

List는 순서가 있는 요소(element)들의 모음을 나타냅니다. List는 배열과 유사하게 인덱스를 사용하여 요소에 접근할 수 있으며, 요소의 순서가 유지됩니다. 또한 List는 중복된 요소를 허용합니다.

List 인터페이스는 다음과 같은 주요 메서드들을 포함합니다

  1. 요소의 추가, 삭제 및 접근 : 요소를 추가하거나 삭제하고, 특정 인덱스의 요소에 접근하는 메서드들이 포함됩니다.
    • add(E element) : 요소를 리스트의 끝에 추가합니다.
    • add(int index, E element) : 지정된 인덱스에 요소를 추가합니다.
    • remove(Object o) : 지정된 요소를 삭제합니다.
    • remove(int index) : 지정된 인덱스의 요소를 삭제합니다.
    • get(int index) : 지정된 인덱스의 요소를 반환합니다.
  2.  요소 검색 : 리스트에서 특정 요소를 검색하는 메서드들이 포함됩니다.
    • contains(Object o) : 지정된 요소가 리스트에 포함되어 있는지 여부를 반환합니다.
    • indexOf(Object o) : 지정된 요소의 첫 번째 인덱스를 반환합니다.
  3.  리스트 정보 조회 : 리스트의 크기나 비어 있는지 여부를 확인하는 메서드들이 포함됩니다.
    • size() : 리스트의 요소 개수를 반환합니다.
    • isEmpty() : 리스트가 비어 있는지 여부를 반환합니다.

List 인터페이스는 이러한 메서드들을 통해 다양한 리스트 구현체에서 일관된 방식으로 요소들을 관리할 수 있도록 합니다. 예를 들어, ArrayList, LinkedList, Vector 등은 List 인터페이스를 구현한 구현체들입니다. 이러한 구현체들은 각각의 특성에 따라 요소의 추가, 삭제, 검색 등에 대해 다른 성능 특성을 가질 수 있습니다.

List는 배열과 달리 크기를 동적으로 조정할 수 있으며, 중간에 요소를 삽입하거나 삭제하는 작업이 쉽습니다. 따라서 List는 자료를 유연하게 관리하고 다양한 용도로 활용할 수 있는 중요한 데이터 구조입니다.

 

아래는 사용에 대한 예시입니다.

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

public class TravelPlanner {
    public static void main(String[] args) {
        // 여행 일정 리스트 생성
        List<String> itinerary = new ArrayList<>();

        // 여행 일정 추가
        itinerary.add("2024-07-01: 서울");
        itinerary.add("2024-07-02: 부산");
        itinerary.add("2024-07-03: 제주도");

        // 중간에 일정 삽입
        itinerary.add(2, "2024-07-02: 경주");

        // 여행 일정 출력
        System.out.println("여행 일정:");
        for (String item : itinerary) {
            System.out.println(item);
        }
    }
}

위의 예시에서는 ArrayList를 사용하여 여행 일정을 저장하는 리스트를 만들었습니다. 각 요소는 날짜와 해당 날짜에 방문할 장소를 문자열로 표현하였습니다.

 

add() 메서드를 사용하여 일정을 추가하고, 중간에 일정을 삽입을 매우 간단하게 할 수 있으며, for-each 루프를 사용하여 리스트의 쉽게 모든 일정을 출력할 수 있습니다.

 

이와 같이 List를 사용하면 여러 종류의 데이터를 순서대로 저장하고 관리할 수 있으며, 동적으로 크기를 조정할 수 있습니다.

 

기본적으로 쓰이는 자료구조 알고리즘 조차 실제 구현하면 매우 목잡하지만, List를 이용하면 많은 상황에서 쓰이는 자료구조를 쉽게 구현할 수 있습니다.