CS 기초/자료구조

알고리즘 - 자료구조 - 리스트

꿈꾸는 아이 2025. 5. 7. 19:14

개요

  • 순서가 중요한 데이터를 저장하고 처리할 때 사용하는 기본 자료구조이다.
  • 삽입/삭제/탐색 등의 기능을 제공한다.

특징

  • 순서 유지
  • 중복 허용
  • 인덱스를 통해 값에 접근
  • 삽입/삭제/탐색 기능을 제공

리스트 종류

  • ArrayList(배열 기반 리스트)
    • 내부적으로 연속된 배열로 저장한다.
    • 장점: 빠른 접근
    • 단점: 중간 삽입/삭제는 느림
  • LinkedList(연결 리스트)
    • 각각의 노드가 서로 연결된 형태이다.
    • 장점: 삽입/삭제가 빠르다
    • 단점: 접근 시 느림

리스트와 배열의 차이

항목 배열 리스트

크기 고정 크기 가변 크기
성능 인덱스 접근 빠름 삽입/삭제 유연
기능 기능 적음 다양한 메서드 제공

리스트 사용법(자바)

  • ArrayList와 LinkedList 모두 List 인터페이스로 객체를 생성하여 사용한다.(각 클래스의 객체를 생성해도 무관)
  • 사용법의 차이는 없고 내부적으로 동작하는 구조에서 차이점이 있다.
    • ArrayList
    import java.util.ArrayList;
    import java.util.List;
    
    public class Example {
        public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            list.add("Apple");
            list.add("Banana");
    
            System.out.println(list.get(1)); // "Banana"
        }
    }
    
    • LinkedList
    import java.util.LinkedList;
    import java.util.List;
    
    public class Example {
        public static void main(String[] args) {
            List<String> list = new LinkedList<>();
            list.add("Apple");
            list.add("Banana");
    
            System.out.println(list.get(1)); // "Banana"
        }
    }
    

사용 사례

  • 문자열 처리: 문자열을 한 글자씩 쪼개어 리스트로 처리
  • 시험 점수 저장 및 평균 계산: 점수를 리스트에 저장하고 처리
  • 검색 결과 리스트: 검색된 결과를 순서대로 저장 후 페이지 단위로 보여줌
  • UI 목록 뷰: 뉴스목록, 친구목록 등 리스트 형태로 렌더링

정리

  • 데이터의 순서와 중복 허용이 중요할 경우에 리스트를 사용하면 된다.
    • 빠른 데이터 접근이 필요한 경우 ArrayList를 사용한다
    • 삽입/삭제가 자주 발생한다면 LinkedList를 사용한다
    • 처리하는 데이터가 소규모일 경우 큰 차이는 없으나 기본적으로 ArrayList를 자주 사용한다.