Engineering Note

[Java] List 컬렉션(ArrayList, LinkedList) 본문

Programming Language/Java

[Java] List 컬렉션(ArrayList, LinkedList)

Software Engineer Kim 2025. 6. 25. 11:36

List 컬렉션은 객체를 인덱스로 관리한다.

List 컬렉션에서 공통적으로 사용가능한 List 인터페이스 메서드

 

 

 

ArrayList

- ArrayList에 객체를 추가하면 내부 배열에 객체가 저장. 일반 배열과 차이점은 제한 없이 객체를 추가할 수 있다.

 

 

LinkedList

- ArrayList와 사용 방법은 동일하지만 내부 구조는 완전히 다르다. ArrayList는 내부 배열에 객체를 저장하지만, LinkedList는 인접 객체를 체인처럼 연결해서 관리한다.

 



ArryaList, LinkedList 차이

- LinkedList는 자료를 체인 처럼 관리하기 때문에 특정 위치에서 객체를 삽입하거나 삭제하면 바로 앞뒤 링크만 변경하면 되므로 빈번한 객체 삭제와 삽입에서 ArrayList보다 높은 성능을 보여준다.



ArryaList, LinkedList 속도 측정

package ch15.sec02.exam03;

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

public class LinkedListExample {
    public static void main(String[] args) {
        //ArrayList 컬렉션 객체 생성
        List<String> list1 = new ArrayList<String>();

        //LinkedList 컬렉션 객체 생성
        List<String> list2 = new LinkedList<String>();

        //시작 시간과 끝 시간을 저장할 변수 선언
        long startTime;
        long endTime;

        //ArrayList 컬렉션에 저장하는 시간 측정
        startTime = System.nanoTime();
        for (int i = 0; i < 10000; i++) {
            list1.add(0, String.valueOf(i));
        }

        endTime = System.nanoTime();
        System.out.printf("%-17s %8d ns \n", "AarrayList 걸린 시간: ", (endTime - startTime));


        //LinkedList 컬렉션에 저장하는 시간 측정
        startTime = System.nanoTime();
        for (int i = 0; i < 10000; i++) {
            list2.add(0, String.valueOf(i));
        }
        endTime = System.nanoTime();

        System.out.printf("%-17s %8d ns \n", "LinkedList 걸린 시간: ", (endTime - startTime));
    }
}

 

 

 

출력 결과

 

 

참고 자료 : 이것이 자바다

Comments