울음참고 개발공부
728x90

 

 

ArrayList와 Vector의 차이점

 

ArrayList와 Vector는 둘 다 Java에서 제공하는 동적 배열 구현체입니다. 그러나 몇 가지 중요한 차이점이 있습니다.

 

 

1. 동기화(Synchronization) 지원 여부

 

  • Vector 
    • 동기된 메서드로 구현되어 멀티스레드 환경에서 안전하게 사용할 수 있음
    • 여러 스레드가 동시에 접근하여 수정할 때 스레드 안정성 보장
  • ArrayList
    • 동기화를 지원하지않기 때문에 Vector보다 더 빠름
    • 단일 스레드 환경이거나 개발자가 명시적으로 동기화를 처리해야하는 경우에 사용

 

 

 

2. 성능

 

  • ArrayList 는 동기화를 지원하지 않기 때문에 Vector보다 더 빠름
  • 작업량이 많고 복잡한 멀티스레드 환경이 아니라면 ArrayList가 성능 면에서 더 유리함

 

 

 

3. 용량 증가

 

  • ArrayList
    •  요소가 추가될 때 동적으로 크기를 증가시킴
    • 일반적으로 현재 크기보다 약간 더 큰 새로운 배열을 생성하여 요소를 복사함
  • Vector
    • 크기가 증가할 때마다 기본적으로 2배씩 크기를 늘림
    • 요소가 추가될 때 더 많은 메모리를 할당하므로 사용량이 더 크게 증가할 수 있음

 

 

 

 

4. 초기 용량 설정

 

  • ArrayList
    • 초기 용량을 설정할 수 있는 생성자를 제공
    • 초기 용량을 설정하면 필요한 만큼 배열을 미리 할당할 수 있어 재할당이 발생하지 않음
  • Vector
    • 초기 용량을 설정하는 생성자가 없으며, 기본적으로 10개의 요소를 저장할 수 있는 용량으로 시작

 

 

 

 

5. API 호환성

  • ArrayList와 Vector는 모두 List 인터페이스를 구현하므로 동일한 방식으로 사용할 수 있음
  • 따라서 대부분의 메서드들은 상호교환이 가능함 

 

요약
ArrayList는 동기화를 지원하지 않고 성능이 더 뛰어나며, 초기 용량 설정이 가능합니다.
Vector는 동기화를 지원하며, 멀티스레드 환경에서 스레드 안전성을 제공합니다.

 

 


 

 

Array와 ArrayList의 차이점

 

 

 

1. 크기 조정

 

  • Array
    • 정적으로 크기가 고정되어 있으며, 한 번 생성된 후에는 크기를 변경할 수 없음
  • ArrayList
    • 동적으로 크기를 조절할 수 있음
    • 요소를 추가하거나 제거할 때 내부적으로 크기가 자동으로 조정됨

 

 

 

 

2. 자료형

 

  • Array 
    • 특정 자료형의 요소들을 저장하는 것이 가능
    • 예 ) int, double, String과 같은 자료형을 배열에 저장할 수 있음
  • ArrayList
    • 제네릭을 사용하여 다양한 자료형의 요소를 저장할 수 있음

 

 

 

 

3. 기능과 메서드

 

  • Array
    • 간단한 인덱스 기반의 접근과 기본적인 배열 기능을 제공
  • ArrayList
    • List 인터페이스를 구현하며, 다양한 메서드를 제공하여 요소를 추가,제거,탐색, 정렬 함
    • ArrayList 가 더 많은 기능을 제공하며, 개발자가 유연하게 요소를 다룰 수 있도록 함

 

 

 

 

4. 메모리 할당

 

  • Array
    • 요소의 크기를 고정하므로 초기에 정해진 크기만큼 메모리를 할당
  • ArrayList
    • 요소를 동적으로 추가하고 제거할 수 있으므로, 내부적으로 크기를 조정하고 필요에 따라 메모리 재할당

 

 

 

5. 다차원 배열

 

  • Array
    • 다차원 배열을 직접적으로 지원
    • int[][] 로 2차원 배열을 생성할 수 있음
  • ArrayList
    • 내부적으로 1차원 배열을 사용
    • 다차원 ArrayList를 사용하기 위해선 중첩된 ArrayList를 생성해야 함

 

 

 

 

6. 성능

 

  • Array
    • 간단한 인덱스 기반 접근 가능하기 때문에 메모리 사용량과 접근 시간면에서 효율적
  • ArrayList
    • 크기 조정과 객체 관리 등 추가적인 작업을 수행하기 때문에 상대적으로 성능이 떨어질 수 있음
    • 그러나 대부분의 경우에는 이 차이가 미미하며, 편리한 기능을 사용하기 위해 ArrayList  를 선호

 

 

요약
Array는 정적 크기의 배열로 메모리를 더 효율적으로 사용하고 빠른 접근이 가능합니다.
ArrayList는 동적 크기의 배열로 다양한 기능을 제공하며, 요소를 효율적으로 추가, 제거, 탐색할 수 있습니다.

 


 

 

import java.util.ArrayList;
import java.util.Arrays;

public class ArrayExample {
    public static void main(String[] args) {
        // Array 예시
        int[] array = new int[5];
        
        // 요소 할당
        array[0] = 10;
        array[1] = 20;
        array[2] = 30;
        
        // 요소 접근
        System.out.println("Array의 두 번째 요소: " + array[1]);
        
        // 배열 초기화
        int[] initializedArray = {40, 50, 60};
        
        // ArrayList 예시
        ArrayList<String> arrayList = new ArrayList<>();
        
        // 요소 추가
        arrayList.add("사과");
        arrayList.add("바나나");
        arrayList.add("오렌지");
        
        // 요소 접근
        System.out.println("ArrayList의 첫 번째 요소: " + arrayList.get(0));
        
        // ArrayList 배열로 변환
        String[] convertedArray = arrayList.toArray(new String[0]);
        
        // 배열 출력
        System.out.println("Converted Array: " + Arrays.toString(convertedArray));
    }
}
Array의 두 번째 요소: 20
ArrayList의 첫 번째 요소: 사과
Converted Array: [사과, 바나나, 오렌지]

 

 

 

 

 

 

 

728x90
profile

울음참고 개발공부

@메각이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!