프로그래밍/Java

Java Collection(ArrayList, LinkedList, Vector)

C.Story 2023. 2. 6. 14:02
반응형

Java에서 java.util.List 인터페이스는 Java Collection Framework의 일부이며 정렬된 요소 모음을 나타냅니다. 목록은 중복을 허용하고 조작할 수 있는 정의된 순서를 가집니다. 요소는 인덱스로 액세스할 수 있으며 목록 크기는 요소가 추가되거나 제거될 때 동적으로 변경될 수 있습니다.

다음을 포함하여 List 인터페이스의 여러 구현이 있습니다.

ArrayList: 배열을 사용하여 요소를 저장하고 기본 작업(get 및 set)에 대해 일정한 시간 성능을 제공하는 구현입니다.
LinkedList: 이중 연결 목록을 사용하여 요소를 저장하고 기본 작업(추가 및 제거)에 대해 일정한 시간 성능을 제공하는 구현입니다.
Vector: 배열을 사용하고 동기화되는 구현(스레드 안전). ArrayList와 유사하지만 메서드가 동기화되어 속도가 느려집니다.
사용할 구현 선택은 애플리케이션의 특정 요구 사항에 따라 다릅니다. 예를 들어 인덱스를 사용하여 요소에 빠르게 액세스해야 하는 경우 ArrayList가 최선의 선택일 수 있습니다. 목록 중간에서 요소를 자주 추가하거나 제거하는 경우 LinkedList가 더 나은 선택일 수 있습니다.


ArrayList

java.util.ArrayList 클래스는 Java의 java.util.List 인터페이스 구현이며 필요에 따라 늘리거나 줄일 수 있는 동적 배열을 제공합니다. 배열을 기본 데이터 구조로 사용하여 요소를 저장하고 get 및 set 메서드와 같은 기본 작업에 대해 일정한 시간 성능을 제공합니다.

다음은 ArrayList의 주요 기능과 특성 중 일부입니다.

 

  • 동적 크기
    ArrayList의 크기는 요소가 추가되거나 제거됨에 따라 동적으로 변경될 수 있습니다.
  • 빠른 액세스
    get 및 set 메서드는 인덱스로 요소에 액세스하기 위한 상수 시간 성능을 제공합니다.
  • 정렬된 컬렉션
    ArrayList의 요소는 정렬되며 순서는 요소가 추가된 순서에 따라 결정됩니다.
  • 중복 지원
    ArrayList는 중복을 허용하므로 동일한 요소를 목록에 여러 번 추가할 수 있습니다.

 

다음은 Java에서 ArrayList를 사용하는 방법의 예입니다.

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        ArrayList<String> names = new ArrayList<>();
        names.add("John");
        names.add("Jane");
        names.add("Jim");
        names.add("Jane"); // duplicate allowed

        System.out.println("Size: " + names.size());

        for (String name : names) {
            System.out.println(name);
        }
    }
}

이 예제는 문자열의 ArrayList를 만들고 여기에 여러 요소를 추가합니다. size 메서드는 목록의 요소 수를 반환하고 for-each 루프는 목록의 요소를 반복하는 데 사용됩니다.


LinkedList

  • java.util.LinkedList 클래스는 Java의 java.util.List 인터페이스 구현이며 요소를 저장하기 위한 기본 데이터 구조로 이중 연결 목록을 제공합니다. 배열과 달리 연결 목록은 크기가 고정되어 있지 않으므로 크기를 조정할 필요 없이 요소를 동적으로 추가하거나 제거할 수 있습니다.

    다음은 LinkedList의 주요 기능과 특성 중 일부입니다.

  • 동적 크기
    LinkedList의 크기는 요소가 추가되거나 제거됨에 따라 동적으로 변경될 수 있습니다.
  • 이중 연결
    LinkedList의 각 요소는 이전 요소와 다음 요소 모두에 연결되어 목록의 어느 위치에나 요소를 효율적으로 삽입하고 제거할 수 있습니다.
  • 정렬된 컬렉션
    LinkedList의 요소는 정렬되며 순서는 요소가 추가된 순서에 따라 결정됩니다.
  • 중복 지원
    LinkedList는 중복을 허용하므로 동일한 요소를 목록에 여러 번 추가할 수 있습니다.

 

다음은 Java에서 LinkedList를 사용하는 방법의 예입니다.

import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        LinkedList<String> names = new LinkedList<>();
        names.add("John");
        names.add("Jane");
        names.add("Jim");
        names.add("Jane"); // duplicate allowed

        System.out.println("Size: " + names.size());

        for (String name : names) {
            System.out.println(name);
        }
    }
}

이 예제는 문자열의 LinkedList를 만들고 여기에 여러 요소를 추가합니다. 

size 메서드는 목록의 요소 수를 반환하고 for-each 루프는 목록의 요소를 반복하는 데 사용됩니다.

 


Vector

 

  • java.util.Vector 클래스는 요소를 저장하기 위해 개체의 확장 가능한 배열을 제공하는 Java의 동적 배열 구현입니다. 배열과 마찬가지로 Vector의 크기는 고정되어 있지만 Vector의 크기는 요소를 추가하거나 제거하여 동적으로 변경할 수 있습니다.

    다음은 Vector의 주요 기능 및 특성 중 일부입니다.

  • 동적 크기
    벡터의 크기는 요소가 추가되거나 제거됨에 따라 동적으로 변경될 수 있습니다.
  • 스레드 안전
    Vector는 스레드로부터 안전합니다. 즉, 동시성 문제를 일으키지 않고 여러 스레드가 동시에 액세스할 수 있습니다.
  • 동기화됨
    Vector의 모든 메서드가 동기화되어 ArrayList와 같은 다른 컬렉션 클래스보다 속도가 느립니다.
  • 정렬된 컬렉션
    Vector의 요소는 정렬되며 순서는 요소가 추가된 순서에 따라 결정됩니다.
  • 복제 지원
    벡터는 복제를 허용하므로 동일한 요소를 벡터에 여러 번 추가할 수 있습니다.

 

다음은 Java에서 벡터를 사용하는 방법의 예입니다.

import java.util.Vector;

public class Main {
    public static void main(String[] args) {
        Vector<String> names = new Vector<>();
        names.add("John");
        names.add("Jane");
        names.add("Jim");
        names.add("Jane"); // duplicate allowed

        System.out.println("Size: " + names.size());

        for (String name : names) {
            System.out.println(name);
        }
    }
}

이 예제는 문자열의 벡터를 만들고 여기에 여러 요소를 추가합니다. 

size 메서드는 벡터의 요소 수를 반환하고 for-each 루프는 벡터의 요소를 반복하는 데 사용됩니다.

 

다음 포스팅은 Java Map Interface 에 대해 알아보겠습니다.

https://chunstory.tistory.com/10

 

Java Map Interface(HashMap, TreeMap, LinkedHashMap)

Map 인터페이스는 Java Collection Framework의 일부이며 각 키가 고유하고 해당 값을 검색하는 데 사용할 수 있는 키-값 쌍을 저장하는 데이터 구조입니다. Map 인터페이스의 사용방법 중 일부는 다음과

chunstory.tistory.com


https://chunstory.tistory.com/11

 

Java Collection(HashSet, TreeSet, LinkedHashSet)

Java의 Set은 고유한 요소의 모음이며 중복을 허용하지 않습니다. Set은 HashSet, TreeSet 및 LinkedHashSet을 포함하여 Java의 여러 클래스에 의해 구현됩니다. Set 인터페이스의 일부 메서드는 다음과 같습

chunstory.tistory.com

 

반응형