Arraylist와 Vector 사이의 차이

Anonim

Arraylist vs Vector

크기를 알 필요가 없습니다. arraylist는 동적 배열로 볼 수 있습니다. 크기. 이러한 이유 때문에 프로그래머는 arraylist를 정의 할 때 arraylist의 크기를 알 필요가 없습니다. 벡터는 크기가 커질 수있는 배열로 볼 수도 있습니다. 벡터는 쉽게 할당 할 수 있으며 저장소의 필요한 크기를 런타임까지 알 수 없을 때 사용할 수 있습니다.

Arraylist는 무엇입니까?

arraylist는 크기가 커질 수있는 동적 배열로 볼 수 있습니다. 그러므로 arraylists는 선언 할 때 필요한 요소의 크기를 모르는 상황에서 사용하기에 이상적입니다. Java에서 arraylists는 객체 만 보유 할 수 있으며 기본 유형을 직접 보유 할 수 없습니다 (객체 내부에 원시 유형을 넣거나 원시 유형의 래퍼 클래스를 사용할 수 있음). 일반적으로 arraylists에는 삽입, 삭제 및 검색을 수행하는 메소드가 제공됩니다. 요소에 액세스하는 시간 복잡도는 o (1)이며 삽입 및 삭제에는 o (n)의 시간 복잡성이 있습니다. Java에서 arraylists는 foreach 루프, 반복기를 사용하거나 간단히 인덱스를 사용하여 탐색 할 수 있습니다. Java에서 arraylists는 버전 1. 2에서 소개되었으며 Java Collections Framework의 일부입니다.

벡터 란 무엇입니까?

Vector는 또한 크기가 커질 수있는 배열입니다. 벡터는 쉽게 할당 할 수 있으며 저장소의 필요한 크기를 런타임까지 알 수없는 경우 사용할 수 있습니다. 벡터는 객체를 보유 할 수 있으며 원시 유형을 보유 할 수 없습니다. 벡터는 동기화되므로 다중 스레드 환경에서 안전하게 사용할 수 있습니다. 벡터에는 객체 추가, 객체 삭제 및 객체 검색 메소드가 제공됩니다. java의 arraylist와 마찬가지로 foreach 루프, 반복기 또는 인덱스를 사용하여 벡터를 탐색 할 수 있습니다. Java와 관련하여 Java의 첫 번째 버전 이후 벡터가 포함되었습니다.

Arraylist와 Vector의 차이점은 무엇입니까? arraylists와 vector 모두 크기가 커질 수있는 동적 배열과 매우 유사하지만 몇 가지 중요한 차이점이 있습니다. arraylists와 vector의 주요 차이점은 arraylists가 동기화되지 않은 반면 벡터는 동기화된다는 것입니다. 따라서 다중 스레드 환경에서 arraylists를 사용하는 것은 적합하지 않지만 벡터는 다중 스레드 환경에서 안전하게 사용할 수 있습니다 (스레드 안전성이 보장되므로). 그러나 벡터의 동기화는 성능을 저하시킵니다. 따라서 단일 스레드 환경에서 벡터를 사용하는 것은 좋지 않습니다. 내부적으로 arraylists와 vector는 배열을 사용하여 객체를 보관합니다. 현재 공간이 충분하지 않으면 벡터는 내부 배열의 크기를 두 배로 늘리는 반면 arraylists는 내부 배열의 크기를 50 % 늘립니다.그러나 arraylists와 vector를 둘 다 사용할 때 적절한 초기 용량을 제공함으로써 내부 배열의 불필요한 크기 조정을 피할 수 있습니다. 데이터의 증가율이 알려진 상황에서는 벡터의 증가 값을 정의 할 수 있기 때문에 벡터를 사용하는 것이 더 적합합니다.