추천, 2024

에디터의 선택

Java에서 ArrayList와 Vector의 차이점

ArrayList와 Vector는 모두 Collection Framework 계층 구조의 클래스입니다. ArrayList 및 Vector는 둘 다 필요에 따라 배열의 크기가 커질 수있는 객체의 동적 배열을 만드는 데 사용됩니다. ArrayList와 Vector를 구별하는 두 가지 기본적인 차이점은 Collection 클래스를 지원하기 위해 나중에 다시 조작 된 레거시 클래스에 Vector가 속하는 반면 ArrayList는 표준 컬렉션 클래스라는 점입니다. 또 다른 중요한 차이점은 ArrayList는 비 동기화되어 있다는 것입니다. 벡터가 동기화됩니다.

아래에 표시된 비교 차트의 도움으로 다른 차이점을 알아 보도록하겠습니다.

비교 차트

비교의 근거ArrayList벡터
기본ArrayList 클래스가 동기화되어 있지 않습니다.벡터 클래스가 동기화됩니다.
레거시 수업ArrayList는 표준 Collection 클래스입니다.Vector는 컬렉션 클래스를 지원하도록 재 설계된 레거시 클래스입니다.
클래스 선언ArrayList 클래스클래스 벡터
재 할당지정하지 않으면 ArrayList의 크기가 절반 씩 증가합니다.지정하지 않으면 벡터가 크기의 두 배로 증가합니다.
공연ArrayList는 비동기이므로 Vector보다 빠르게 작동합니다.Vector가 동기화되면 ArrayList보다 느리게 작동합니다.
열거 / 반복자ArrayList는 Iterator 인터페이스를 사용하여 ArrayList에 저장된 객체를 탐색합니다.Vector는 Iterator 인터페이스뿐만 아니라 Enumeration을 사용하여 Vectors에 저장된 객체를 트래버스합니다.

ArrayList의 정의

ArrayList는 표준 컬렉션 클래스 목록에 속합니다. ArrayList 클래스는 java.util 패키지 내에서 정의되며 표준 컬렉션 클래스 인 AbstractList 클래스를 확장하며 컬렉션 인터페이스에 정의 된 인터페이스 인 List 도 구현합니다. Java에서 표준 배열은 항상 고정 길이입니다. 그것은 한 번 창조되었다는 것을 의미합니다. 동적으로 커지거나 크기가 줄어들지 않습니다. 따라서 사용중인 어레이의 길이에 대한 사전 지식이 있어야합니다. 그러나 때로는 필요한 길이가 런타임에 공개되므로 상황에 따라 Java에서 ArrayList를 도입 할 수 있습니다.

ArrayList는 객체에 대한 참조를 보유하는 배열의 동적 생성에 사용되는 클래스입니다. 이 어레이는 필요할 때마다 크기가 커질 수 있습니다. 클래스 선언은 다음과 같습니다.

 ArrayList 클래스 

여기서 E는 배열이 보유 할 객체 유형을 지정합니다. 생성 된 배열의 길이는 가변적이며 개체가 목록에 추가되거나 제거 될 때 크기가 증가하거나 감소합니다.

ArrayList는 동기화되지 않습니다. 즉, 둘 이상의 스레드가 동시에 배열에서 작동 할 수 있습니다. 예를 들어, 한 스레드가 배열에 객체 참조를 추가하고 다른 스레드가 동시에 같은 배열에서 객체 참조를 제거하는 경우. ArrayList 클래스를 사용하여 동적 배열 만들기 :

 ArrayList S1 = 새로운 ArrayList (); System.out.println ( "S1의 초기 크기 :"+ S1.size ()); S1.add ( "T"); S1.add ( "C"); S1.add ( "H"); S1.add (1, "E"); System.out.println ( "추가 S1 뒤에 다음을 포함합니다 :"+ S1); System.out.println ( "추가 후 S1 크기 :"+ S1.size ()); S1.remove ( "T"); S1.remove (2); System.out.println ( "삭제 S1 이후에 :"+ S1); System.out.println ( "삭제 후 S1 크기 :"+ S1.size ()); // S1 : 0의 OutputInitial 크기 S1을 더한 후에 S1은 다음을 포함합니다 : [T, E, C, H]; 추가 후 S1 크기 : 4 삭제 후 S1에는 다음이 포함됩니다. [E, H] 삭제 후 S1 크기 : 2 

위의 코드에서 알 수 있습니다. 문자열 유형의 객체 배열을 만들었습니다. add () 메서드를 사용하여 배열 S1에 객체를 추가 한 다음 나중에 remove () 메서드를 사용하여 일부 객체를 삭제했습니다. 배열의 초기 크기를 지정하지 않으면 '0'길이가됩니다. 보시다시피 배열은 요소를 추가하거나 삭제할 때 크기가 커지고 작아집니다.

벡터의 정의

Vector는 Collection Framework 계층 구조에서 컬렉션 클래스를 지원하도록 리엔지니어링되는 레거시 클래스입니다. Vector 클래스는 java.util 패키지로 정의되어 AbstractList 클래스에 의해 확장되어 List 인터페이스에 의해 구현됩니다. Vector 클래스는 다음과 같이 선언됩니다.

 클래스 벡터 

여기서 E는 배열에 저장 될 객체의 유형을 정의합니다. Vector 클래스를 사용하여 만든 배열의 길이는 가변입니다. 증가가 지정되지 않으면 크기가 두 배 증가합니다. Vector를 사용하여 배열을 만드는 방법을 이해해 봅시다.

 벡터 V = 새로운 벡터 (1, 1); V.addElement ( "Tech"); V.addElement ( "차이점"); System.out.println ( "2 추가 후 용량 :"+ V.capacity ()); V.addElement ( "사이"); V.addElement ( "Vectors"); System.out.println ( "현재 용량 :"+ V.capacity ()); // 2 추가 후 출력 용량 : 2 현재 용량 : 4 

위의 코드에서 문자열 객체의 배열을 선언하는 동안 특히 Vector의 생성자에서 크기와 증분 값을 각각 언급했음을 알 수 있습니다. 따라서 배열 완료의 한계로서 선언하는 동안 생성자에 제공된 값만큼 증가합니다.

ArrayList와 벡터의 주요 차이점

  1. 여러 스레드가 ArrayList에서 동시에 작동 할 수 있으므로 동기화되지 않은 것으로 간주됩니다. ArrayList와 달리 한 번에 하나의 스레드 만 벡터에서 작동 할 수 있습니다. 따라서 Synchronized 라고 합니다 .
  2. 초기 버전의 Java에서는 일부 클래스와 인터페이스가 레거시 클래스라는 객체를 저장하는 메소드를 제공합니다. Vector는 Java의 레거시 클래스 중 하나입니다. 나중에 이러한 레거시 클래스는 Collection 클래스를 지원하도록 리엔지니어링되었지만 ArrayList 클래스는 표준 Collection 클래스입니다.
  3. 배열의 한도를 최대한 활용하고 지친 배열 옆에 새로운 객체가 추가되면 ArrayList와 Vector에서 크기가 증가하지만 ArrayList에서는 크기가 지정되지 않은 경우 크기가 커집니다 현재 배열의 50 % 씩 증가하지만 벡터 배열에서는 증가 값을 지정하지 않으면 크기가 두 배로 증가합니다.
  4. Vector는 Enumeration과 Iterator를 사용하여 배열을 탐색하는 반면, ArrayList는 반복자를 사용하여 배열을 탐색합니다.
  5. ArrayList는 비동기이며 많은 스레드가 동시에 작동 할 수 있으므로 한 번에 하나의 스레드 만 작동 할 수있는 Vector보다 성능이 좋습니다.

유사점 :

  1. ArrayList와 Vector는 모두 java.util 패키지에 정의되어 있습니다.
  2. ArrayList와 Vector는 모두 AbsractList 클래스를 확장합니다.
  3. ArrayList와 Vector는 모두 List 인터페이스를 구현합니다.
  4. ArrayList와 Vectors는 필요에 따라 커지는 동적 배열을 만드는 데 사용됩니다.
  5. ArrayList와 Vector는 모두 객체 참조를 보유합니다.

결론:

나는 ArrayList를 사용하는 것이 Vector를 사용하는 것보다 더 빠르고 더 잘 수행한다고 말하는 것으로 결론을 짓는다.

Top