JAVA

[JAVA] List

인생아 2024. 11. 16. 11:48
반응형

List는 자바 Collection Framework에서 가장 많이 사용되는 인터페이스 중 하나로, 순서가 있는 데이터 집합을 다룰 때 사용됩니다. 각 데이터 요소는 인덱스(순번)를 가지며, 이를 통해 데이터에 빠르게 접근하거나 조작할 수 있습니다. 특히, 중복 요소를 허용하므로 동일한 값의 데이터를 여러 번 저장할 수 있는 것이 특징입니다.
List는 자바에서 배열의 한계를 보완하기 위해 등장했으며, 크기가 동적으로 변할 수 있는 동적 배열 구조를 제공합니다. 배열처럼 정적인 크기 제한이 없으므로 다양한 데이터를 유연하게 다룰 수 있습니다.

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

public class ListExample {
    public static void main(String[] args) {
        // List 생성 및 초기화
        List<String> nameList = new ArrayList<>();
        
        // 데이터 추가
        nameList.add("김철수");
        nameList.add("이영희");
        nameList.add("박지수");
        nameList.add("김철수"); // 중복 허용
        
        // 데이터 출력
        System.out.println("이름 목록: " + nameList);
    }
}

위 예제에서 ArrayList는 List 인터페이스를 구현한 클래스입니다. "김철수"라는 중복된 데이터가 저장된 것을 확인할 수 있습니다.
Collection 프레임워크에서의 위치
자바의 Collection Framework에서 Listjava.util.Collection 인터페이스를 상속받은 하위 인터페이스입니다. List는 데이터를 순서대로 저장하며, 중복된 데이터를 허용합니다.
List의 주요 구현 클래스는 아래와 같습니다:

  • ArrayList: 동적 배열로, 데이터를 빠르게 조회 가능.
  • LinkedList: 연결 리스트 구조로, 빈번한 삽입 및 삭제에 유리.
  • Vector: 동기화된 동적 배열로, 멀티스레드 환경에 적합.
import java.util.LinkedList;

public class LinkedListExample {
    public static void main(String[] args) {
        // LinkedList 생성
        List<String> animalList = new LinkedList<>();
        
        // 데이터 추가
        animalList.add("호랑이");
        animalList.add("사자");
        animalList.add("호랑이"); // 중복 허용

        // 인덱스를 이용한 데이터 접근
        System.out.println("첫 번째 동물: " + animalList.get(0));
    }
}

List의 주요 특징: 순서 유지와 중복 허용

  • 순서 유지
    List에 데이터를 추가한 순서가 그대로 유지됩니다. 데이터를 삽입한 순서대로 유지되기 때문에 순차적으로 데이터를 처리해야 하는 경우 유용합니다.
  • 중복 허용
    동일한 데이터를 여러 번 추가할 수 있습니다. 이는 집합(Set)과의 주요 차이점입니다.
import java.util.ArrayList;

public class ListFeaturesExample {
    public static void main(String[] args) {
        // ArrayList 생성
        List<Integer> numberList = new ArrayList<>();
        
        // 데이터 추가
        numberList.add(1);
        numberList.add(2);
        numberList.add(1); // 중복 허용
        numberList.add(3);

        // 데이터 출력
        System.out.println("숫자 리스트: " + numberList);
        
        // 순서 확인
        for (int i = 0; i < numberList.size(); i++) {
            System.out.println(i + "번째 요소: " + numberList.get(i));
        }
    }
}

위 예제는 숫자를 순서대로 추가한 후, 이를 인덱스를 통해 출력하여 List의 특징을 보여줍니다.

반응형

데이터 수정 및 삭제

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

public class ModifyListExample {
    public static void main(String[] args) {
        List<String> fruitList = new ArrayList<>();
        fruitList.add("사과");
        fruitList.add("바나나");
        fruitList.add("포도");

        // 데이터 수정
        fruitList.set(1, "딸기");

        // 데이터 삭제
        fruitList.remove("포도");

        // 최종 결과 출력
        System.out.println("최종 과일 목록: " + fruitList);
    }
}

리스트 정렬

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

public class SortListExample {
    public static void main(String[] args) {
        List<String> cityList = new ArrayList<>();
        cityList.add("서울");
        cityList.add("부산");
        cityList.add("인천");
        cityList.add("대구");

        // 정렬
        Collections.sort(cityList);

        // 결과 출력
        System.out.println("정렬된 도시 목록: " + cityList);
    }
}

리스트 탐색

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

public class SearchListExample {
    public static void main(String[] args) {
        List<String> nameList = new ArrayList<>();
        nameList.add("김철수");
        nameList.add("이영희");
        nameList.add("박지수");

        // 데이터 탐색
        if (nameList.contains("이영희")) {
            System.out.println("이영희가 목록에 있습니다.");
        }
    }
}

참고 사이트
자바 공식 문서: https://docs.oracle.com/javase/8/docs/api/java/util/List.html
Collection Framework 가이드: https://docs.oracle.com/javase/tutorial/collections/index.html

반응형