List

말하는 감자·2024년 12월 24일
0

자바 중급

목록 보기
9/21
post-thumbnail

개념

특징

  • 순서 보장
    List는 요소가 추가된 순서를 유지한다. 인덱스를 사용하여 특정 위치에 접근 가능
  • 중복 허용
    같은 값을 가진 요소를 여러 개 저장 가능
    동일한 객체를 다수 추가 가능
  • 가변 크기
    List는 통적으로 크기를 조절 가능하다. 요소를 추가하거나 제거할 때 크기가 자동으로 조정된다.
  • 인덱스 기반 접근
    List는 인덱스를 기반으로 요소에 접근할 수 있다.
    ex. list.get(0): list의 첫번째 요소를 가져옴

주요 메서드

  1. add(element): 추가
  2. add(index,element): 특정 인덱스에 추가
  3. get(index): 특정 인덱스 요소 가져옴
  4. remove(index): 특정 인덱스 요소 제거
  5. size(): 리스트 크기 반환
  6. clear(): 리스트 모든 요소 제거
  7. contains(element): 특정 요소가 포함되있는지 확인(t/f)

구현체

  • ArrayList: 배열 기반 동적 리스트. 랜덤 접근이 빠름
  • LinkedList: 각 요소가 이전/다음 요소에 대한 참조를 가지는 이중연결리스트. 삽입/삭제에 유리
  • Vector: 동기화된 리스트.

vs 배열

배열의 주요 특징

  • 고정 크기
  • 빠른 접근 속도
  • 일관된 데이터 타입
  • 메모리 할당

vs 배열

  • 크기
    :배열은 생성 시 크기가 고정되며, 리스트는 동적으로 크기가 변함
  • 유연성
    : 리스트는 다양한 메서드를 제공하여 요소의 추가, 삭제 및 탐색을 쉽게 할 수 있지만, 배열은 이런 기능이 없음
  • 성능
    : 배열은 인덱스를 통해 요소에 직접 접근이 가능하지만, 리스트는 추가/삭제 작업에 유리
  • 데이터 타입
  • 배열은 동일 데이터 타입만 저장 가능하지만, 리스트는 제네릭을 사용하여 다양한 데이터 타입 저장 가능

Code 예시

public class ListEx {
    public static void main(String[] args) {
        List<String> list=new ArrayList<>();

        list. add("kim");
        list. add("kang");
        list. add("kim");   // 리스트: 중복 가능
        System.out.println(list.size());
        for(int i=0;i<list.size();i++){
            String str=list.get(i);
            System.out.println(str);
        }

    }
}

결과

Code 실습

import java.util.*;


public class ListEx{
    public static List<String> addArray(String[] arr1, String[] arr2){
        List<String> list = new ArrayList<String>();

        for(String str : arr1){
            list.add(str);
        }

        for(String str : arr2){
            list.add(str);
        }
        return list;
    }

    public static void main(String[] args){
        String[] arr1 = {"apple", "banana", "cherry"};
        String[] arr2 = {"date", "fig", "grape"};

        // addArray 메서드를 호출하여 리스트 생성
        List<String> resultList = addArray(arr1, arr2);

        // 결과 출력
        System.out.println(resultList);  // 리스트의 내용을 출력
    }
}
profile
주니어개발자(?)

0개의 댓글