Java에서 ArrayList와 LinkedList의 차이점

Mohammad Irfan 2023년10월12일
  1. Java의 ArrayList 예제
  2. Java의 LinkedList 예제
Java에서 ArrayList와 LinkedList의 차이점

이 튜토리얼에서는 Java에서 char 및 char 유형의 초기 값을 초기화하는 방법을 소개합니다.

Java에서 ArrayList와 LinkedList는 모두 List 인터페이스를 구현하는 클래스입니다. ArrayList는 List 인터페이스의 크기 조정 가능한 배열 구현인 반면 LinkedList는 Java에서 List 인터페이스의 이중 연결 목록 구현입니다.

ArrayList와 LinkedList는 모두 데이터를 저장하는 데 사용되지만 구현 유형으로 인해 몇 가지 차이점이 있습니다. 이 기사에서는 예제를 통해 이들 사이의 몇 가지 주요 차이점을 반복할 것입니다.

작업 배열 목록 링크드리스트
요소 추가 시간을 더 들여 시간을 덜 가져라
액세스 요소 시간을 덜 가져라 시간을 더 들여
요소 제거 시간을 더 들여 시간을 덜 가져라
반복 요소 시간을 덜 가져라 시간을 더 들여
검색 요소 시간을 덜 가져라 시간을 더 들여
  • LinkedList의 성능 문제

캐시 지역에 좋지 않은 작은 메모리 개체를 많이 사용하고 프로세스 전체에서 성능 문제를 만듭니다.

LinkedList는 요소 추가 및 삭제에 빠르지만 특정 요소에 액세스하면 매우 느립니다. 대조적으로 ArrayList는 특정 요소에 대한 액세스는 빠르지만 추가하면 느리고 중간에서 요소를 삭제하면 매우 느립니다.

Java의 ArrayList 예제

이 예제에서는 ArrayList를 만들고 요소 추가, 제거 및 액세스와 같은 여러 작업을 적용했습니다. ArrayList와 LinkedList의 성능 차이를 이해하기 위해 작업을 수행하는 동안 시간을 ​​측정합니다. 아래의 예를 참조하십시오.

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

public class SimpleTesting {
  public static void main(String[] args) {
    List<Integer> list = new ArrayList<Integer>();
    System.out.println("Adding Time : " + addElement(list, 10));
    System.out.println("Adding Time : " + addElement(list, 2));
    System.out.println(list);
    System.out.println("Accessing Time : " + accessElement(list, 1));
    System.out.println("Removing Time : " + removeElement(list, 1));
    System.out.println(list);
  }
  static long addElement(List<Integer> list, int element) {
    long starttime = System.nanoTime();
    list.add(element);
    long endtime = System.nanoTime();
    return (endtime - starttime);
  }
  static long accessElement(List<Integer> list, int index) {
    long starttime = System.nanoTime();
    int el = list.get(index);
    System.out.println("Element found : " + el);
    long endtime = System.nanoTime();
    return (endtime - starttime);
  }
  static long removeElement(List<Integer> list, int index) {
    long starttime = System.nanoTime();
    list.remove(index);
    long endtime = System.nanoTime();
    return (endtime - starttime);
  }
}

출력:

Adding Time : 48556
Adding Time : 2090
[10, 2]
Element found : 2
Accessing Time : 42301
Removing Time : 6471
[10]

Java의 LinkedList 예제

이 예제에서는 LinkedList를 만들고 요소 추가, 제거 및 액세스와 같은 여러 작업을 적용했습니다. ArrayList와 LinkedList의 성능 차이를 이해하기 위해 작업을 수행하는 동안 시간도 측정합니다. 아래의 예를 참조하십시오.

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

public class SimpleTesting {
  public static void main(String[] args) {
    List<Integer> list = new LinkedList<Integer>();
    System.out.println("Adding Time : " + addElement(list, 10));
    System.out.println("Adding Time : " + addElement(list, 2));
    System.out.println(list);
    System.out.println("Accessing Time : " + accessElement(list, 1));
    System.out.println("Removing Time : " + removeElement(list, 1));
    System.out.println(list);
  }
  static long addElement(List<Integer> list, int element) {
    long starttime = System.nanoTime();
    list.add(element);
    long endtime = System.nanoTime();
    return (endtime - starttime);
  }
  static long accessElement(List<Integer> list, int index) {
    long starttime = System.nanoTime();
    int el = list.get(index);
    System.out.println("Element found : " + el);
    long endtime = System.nanoTime();
    return (endtime - starttime);
  }
  static long removeElement(List<Integer> list, int index) {
    long starttime = System.nanoTime();
    list.remove(index);
    long endtime = System.nanoTime();
    return (endtime - starttime);
  }
}

출력:

Adding Time : 82591
Adding Time : 4218
[10, 2]
Element found : 2
Accessing Time : 54516
Removing Time : 7572
[10]

관련 문장 - Java ArrayList

관련 문장 - Java LinkedList