what is java vector java vector class tutorial with examples
이 튜토리얼은 예제와 함께 Java의 벡터 데이터 구조에 대한 모든 것을 설명합니다. 프로그램에서 Java 벡터를 생성, 초기화, 정렬 및 사용하는 방법을 배웁니다.
벡터는 자체적으로 증가하거나 축소 할 수있는 동적 배열로 정의 할 수 있습니다. 즉, 더 많은 요소가 추가되면 벡터가 증가하고 요소가 제거되면 축소됩니다.
이 동작은 정적 배열의 동작과 다릅니다. 그러나 배열과 유사하게 정수 인덱스를 사용하여 벡터 요소에 액세스 할 수 있습니다.
=> 여기에서 Java 교육 자습서의 A-Z를 보려면 여기를 확인하십시오.
벡터는 다른 동적 배열 데이터 구조와 유사하게 볼 수 있습니다. 아래 두 가지 차이점을 제외하고 ArrayList :
- 벡터가 동기화됩니다. 즉, Vector의 모든 메서드가 '동기화 됨'으로 표시되므로 메서드가 호출되면 이전 호출이 종료되지 않는 한 동일한 메서드를 호출 할 수 없습니다.
- 벡터 클래스에는 컬렉션 프레임 워크의 일부가 아닌 레거시 메서드가 많은 메서드가 있습니다.
학습 내용 :
자바 벡터 클래스
Vector 클래스는 ' java.util ”패키지 및 List 인터페이스를 구현합니다. Vector는 객체의 배열 또는 객체의 벡터입니다.
Vector 클래스의 클래스 선언은 다음과 같습니다.
public class Vector extends Object implements List, Cloneable, Serializable
위와 같이 Vector 클래스는 ' java.lang.object ”이며 List, Cloneable 및 Serializable 인터페이스를 구현합니다.
Java에서 벡터를 만드는 방법?
다음 Vector 생성자 메서드 중 하나를 사용하여 Vector 객체를 만들 수 있습니다.
Windows에서 .swf 파일을 여는 방법
생성자 프로토 타입 | 기술 | |
---|---|---|
맑은 | 무효 클리어 () | 요소의 벡터를 지 웁니다. |
벡터() | 이것은 Vector 클래스의 기본 생성자입니다. 크기가 10 인 빈 벡터를 만듭니다. | |
벡터 (int initialCapacity) | 이 오버로드 된 생성자는 capacity = initialCapacity 인 빈 Vector 객체를 생성합니다. | |
벡터 (int initialCapacity, int capacityIncrement) | 이 생성자 메서드는 initialCapacity 및 capacityIncrement가 지정된 빈 Vector 객체를 만듭니다. | |
Vector (컬렉션 c) | 지정된 컬렉션의 초기 요소로 Vector 객체가 생성됩니다. c. |
Vector 객체를 초기화하는 각 생성자를 살펴 보겠습니다.
벡터 초기화
(i) 벡터 ()
이것은 Vector 클래스의 기본 생성자입니다. 이 생성자를 호출하면 기본 크기가 10 인 Vector 객체가 생성됩니다.
이 메서드의 일반적인 구문은 다음과 같습니다.
벡터 객체 = new Vector ();
예를 들어,
Vector vec1 = new Vector ();
위의 문은 크기가 10 인 새 벡터‘vec1’을 만듭니다.
(ii) 벡터 (int initialCapacity)
Vector 클래스의 오버로드 된 생성자는 'initialCapacity'를 인수로받습니다. 이 생성자는 지정된 용량으로 Vector 객체를 만듭니다.
메서드의 일반적인 구문은 다음과 같습니다.
벡터 객체 = 새 벡터 (initialCapacity);
예를 들어,
Vector vec1 = new Vector (10);
위의 프로그래밍 명령문은 용량이 10 인 벡터 객체 'vec1'을 만듭니다. 즉,이 Vector는 최대 10 개의 요소를 저장할 수 있습니다.
(iii) 벡터 (int initialCapacity, int capacityIncrement)
이것은 Vector 클래스의 또 다른 오버로드 된 생성자이며 지정된 초기 용량과 용량 증분으로 Vector 객체를 생성합니다.
이 메서드의 일반적인 구문은 다음과 같습니다.
벡터 객체 = 새 벡터 (initialCapacity, capacityIncrement);
예를 들어,
Vector vec1 = new Vector(5,10);
위의 설명에서 Vector의 초기 용량은 5이고 증분은 10입니다. 이는 6일요소가 벡터에 삽입되면 벡터의 용량이 15 (5 + 10)로 증가합니다. 마찬가지로 16일요소가 삽입되면 Vector의 벡터 용량이 25 (15 +10)로 확장됩니다.
(iv) Vector (컬렉션 c)
Vector 클래스의 마지막 오버로드 된 생성자는 미리 정의 된 컬렉션을 인수로 사용하고이 컬렉션의 모든 요소를 요소로 사용하여 Vector를 만듭니다.
일반적인 구문은 다음과 같습니다.
Vector 객체 = new Vector (컬렉션 c);
예를 들어,
Vector vec1 = new Vector(aList); where aList = {1,2,3,4,5};
위의 문은 초기 요소가 {1,2,3,4, 5} 인 벡터‘vec1’을 생성합니다.
이러한 모든 설명을 염두에두면 이러한 생성자를 더 잘 이해하기 위해 Vector 프로그램을 구현할 수 있습니다.
자바의 벡터 메소드
다음은 Java의 Vector 클래스에서 지원하는 메소드입니다.
방법 이름 | 원기 | 기술 |
---|---|---|
더하다 | 부울 더하기 (E e) | 벡터 끝에 주어진 요소를 추가합니다. |
Void add (int index, E 요소) | 지정된 인덱스에서 벡터에 요소를 추가합니다. | |
addAll | 부울 addAll (컬렉션 c) | 지정된 컬렉션의 모든 요소를 벡터 끝에 추가합니다. |
부울 addAll (int index, Collection c) | 지정된 인덱스에 지정된 컬렉션의 모든 요소를 추가합니다. | |
addElement | void addElement (E obj) | 벡터 크기를 늘려 벡터 끝에 지정된 요소를 추가합니다. |
생산 능력 | 정수 용량 () | 벡터의 현재 용량을 반환합니다. |
복제 | 개체 clone () | 벡터를 복제합니다. |
포함 | 부울 포함 (Object o) | 벡터에 지정된 요소가 포함되어 있는지 확인합니다. |
containsAll | 부울 containsAll (컬렉션 c) | 벡터에 주어진 컬렉션에있는 모든 요소가 포함되어 있는지 확인합니다. |
copyInto | Void copyInto (Object () anArray) | 벡터 요소를 지정된 배열에 복사합니다. |
ElementAt | E ElementAt (int 인덱스) | 지정된 인덱스의 벡터 요소를 반환합니다. |
집단 | 열거 요소 () | 벡터의 열거 된 구성 요소를 반환합니다. |
ensureCapacity | Void ensureCapacity (int minCapacity) | 지정된 최소 용량을 충족하도록 벡터 용량을 늘립니다. |
방법 이름 | 원기 | 기술 |
---|---|---|
insertElementAt | Void insertElementAt (E obj, int 인덱스) | 주어진 인덱스의 벡터에 주어진 객체를 삽입합니다. |
같음 | 부울 같음 (Object o) | 현재 벡터를 지정된 벡터와 비교하여 동일한 지 확인합니다. |
firstElement | E firstElement () | 인덱스 0에있는 벡터의 첫 번째 요소를 반환합니다. |
가져 오기 | E get (int 인덱스) | 벡터의 지정된 인덱스에있는 요소를 반환합니다. |
해시 코드 | int hashCode () | Vector의 해시 코드 값을 반환합니다. |
indexOf | int indexOf (객체 o) | 벡터에서 주어진 요소가 처음 나타나는 인덱스를 찾습니다. 요소가 벡터에 없으면 -1입니다. |
int indexOf (Object o, int 인덱스) | 지정된 요소에 대해 지정된 인덱스에서 벡터를 정방향으로 검색하고 요소가 발견되면 인덱스를 반환하고 요소가 없으면 -1을 반환합니다. | |
비었다 | 부울 isEmpty () | 벡터가 비어 있는지 확인합니다. |
반복자 | Iteratoriterator () | 벡터의 요소를 순회하는 데 사용되는 반복기를 반환합니다. |
lastElement | E lastElement () | 벡터의 마지막 요소를 반환합니다. |
lastIndexOf | Int lastIndexOf (객체 o) | 벡터에서 주어진 요소의 마지막 항목을 검색하고 인덱스를 반환하거나 요소를 찾을 수없는 경우 -1을 반환합니다. |
Int lastIndexOf (Object o, int 인덱스) | 주어진 인덱스에서 역방향으로 주어진 요소의 마지막 발생 검색을 시작합니다. 요소가 발견되면 인덱스를 반환하고 그렇지 않으면 -1을 반환합니다. | |
listIterator | ListIteratorlistIterator () | 벡터 요소에 대한 목록 반복기를 반환합니다. |
ListIteratorlistIterator (int 인덱스) | 지정된 인덱스에서 시작하는 벡터 요소에 대한 목록 반복기를 반환합니다. |
방법 이름 | 원기 | 기술 |
---|---|---|
removeRange | protected void removeRange (int fromIndex, int toIndex) | fromIndex (포함), totoIndex (제외)에서 지정된 범위에있는 벡터의 모든 요소를 삭제합니다. |
없애다 | E 제거 (int 인덱스) | 벡터에서 주어진 인덱스의 요소를 삭제합니다. |
부울 제거 (Object o) | 벡터에서 주어진 요소의 첫 번째 발생을 삭제합니다. 요소가 없으면 벡터에 아무 일도 일어나지 않습니다. | |
모두 제거 | 부울 removeAll (컬렉션 c) | 주어진 컬렉션에있는 벡터에서 모든 요소를 삭제합니다. |
void removeAll Elements () | 모든 벡터 요소를 삭제하여 크기를 0으로 줄입니다. | |
removeElement | 부울 removeElement (Object obj) | 벡터에서 지정된 요소의 첫 번째 발생을 제거합니다. |
void removeElementAt (int index) | 주어진 인덱스에서 요소를 삭제합니다. | |
유지 | Boolean preserveAll (컬렉션 c) | 'removeAll'과는 반대로 preserveAll 메서드는 지정된 Collection의 요소와 일치하는 Vector의 요소를 유지합니다. |
세트 | E 세트 (정수 인덱스, E 요소) | 제공된 새 요소를 사용하여 지정된 인덱스의 값을 설정합니다. |
Void set ElementAt (E obj, int index) | 주어진 인덱스에 주어진 요소를 설정합니다. | |
setSize | Void setSize (int newSize) | 이 벡터에 대해 주어진 크기를 설정합니다. |
크기 | int 크기 () | 이 벡터의 요소 수 또는 벡터의 길이를 반환합니다. |
하위 목록 | ListsubList (intfromIndex, inttoIndex) | fromIndex에서 toIndex에 이르는 벡터의 뷰 또는 하위 목록을 반환합니다. |
toArray | Object () toArray () | 주어진 벡터를 주어진 순서대로 모든 벡터 요소를 포함하는 배열로 변환합니다. |
T () toArray (T () a) | 모든 벡터 요소를 포함하는 지정된 유형의 배열을 반환합니다. | |
toString | 문자열 toString () | 벡터의 문자열 표현을 반환합니다. |
trimToSize | void trimToSize () | 현재 크기에 맞게 벡터를 자릅니다. |
벡터 구현
다음 Java 프로그램은 위에서 설명한 모든 생성자 메소드의 사용법을 보여줍니다.
import java.util.*; public class Main{ public static void main(String() args) { //Create vectors v1, v2,v3 and v4 Vector v1 = new Vector(); //a vector with default constructor Vector v2 = new Vector(20); // a vector of given Size //initialize vector v2 with values v2.add(10); v2.add(20); v2.add(30); Vector v3 = new Vector(30, 10); // a vector of given Size and Increment // create a vector v4 with given collection List aList = new ArrayList(); aList.add('one'); aList.add('two'); Vector v4 = new Vector(aList); //print contents of each vector System.out.println('Vector v1 Contents:' + v1); System.out.println('Vector v2 Contents:' + v2); System.out.println('Vector v3 Contents:' + v3); System.out.println('Vector v4 Contents:' + v4); } }
산출:
레지스트리 창 10을 정리하는 가장 좋은 방법
위의 프로그램에는 4 개의 벡터가 있습니다. 첫 번째 v1은 기본 생성자로 생성됩니다. 두 번째 Vector v2는 초기 용량이 20 인 상태로 생성됩니다. 그런 다음 v2에 몇 가지 요소가 추가됩니다. 세 번째 Vector는 초기 용량이 30이고 증분 10으로 생성됩니다.
다음으로 ArrayList를 만들고 ArrayList를 인수로 사용하여 네 번째 Vector v4를 만듭니다. 마지막으로 이러한 각 벡터의 내용을 표시합니다.
네 번째 Vector v4의 내용을 확인하십시오. ArrayList를 인자로 제공 했으므로 ArrayList의 내용은 v4의 내용이됩니다.
완전한 벡터 예제
이제 또 다른 프로그램을 구현해 보겠습니다. 벡터 생성, 요소 추가 및 내용 표시를 보여줍니다.
import java.util.*; public class Main { public static void main(String args()) { //Create an empty Vector of even numbers Vector evenVector= new Vector (); //Add elements in the vector evenVector.add(2); evenVector.add(4); evenVector.add(6); evenVector.add(8); evenVector.add(10); evenVector.add(12); evenVector.add(14); evenVector.add(16); //Display the vector System.out.println('Vector evenVector contents: ' +evenVector); //delete the first occurence of an element 4 using remove method System.out.println('
Firstoccurence of element 4 removed: '+evenVector.remove((Integer)4)); //Display the vector System.out.println('
Vector contents after remove operation: ' +evenVector); //Remove the element at index 4 & display the vector System.out.println('
Remove element at index 4: ' +evenVector.remove(4)); System.out.println('
Vector contents after remove: ' +evenVector); //hashcode for the vector System.out.println('
Hash code of the vector = '+evenVector.hashCode()); //Get the element at index 1 System.out.println('
Element at index 1 is = '+evenVector.get(1)); } }
산출:
다른 벡터 예제를 보겠습니다. 이 프로그램에서 우리는 string 형 벡터 사용 . 요소를 추가하여이 벡터를 조작 한 다음 크기와 용량을 인쇄합니다.
import java.util.*; public class Main { public static void main(String args()) { // create a vector with initial capacity = 2 Vector fruits_vec = new Vector(2); //add elements to the vector fruits_vec.addElement('Grapes'); fruits_vec.addElement('Melon'); fruits_vec.addElement('Kiwi'); fruits_vec.addElement('Apple'); //print current size and capacity of the vector System.out.println('Vector Size: '+fruits_vec.size()); System.out.println('Default Vector capacity increment: '+fruits_vec.capacity()); //add more elements to the vector fruits_vec.addElement('Orange'); fruits_vec.addElement('Mango'); fruits_vec.addElement('Fig'); //print current size and capacity again System.out.println('Vector Size after addition: '+fruits_vec.size()); System.out.println('Vector Capacity after increment: '+fruits_vec.capacity()); //print vector elements Enumeration fruits_enum = fruits_vec.elements(); System.out.println('
Vector Elements are:'); while(fruits_enum.hasMoreElements()) System.out.print(fruits_enum.nextElement() + ' '); } }
산출:
벡터 정렬
특정 순서에 따라 벡터를 정렬 할 수도 있습니다. Vector를 정렬하려면 Java Collections Framework의 Collections.sort () 메서드를 사용해야합니다.
다음 예제는 벡터 정렬을 보여줍니다.
import java.util.*; public class Main { public static void main(String arg()) { //Create an empty vector Vector oddVector = new Vector(); //Add elements to the vector oddVector.add(1); oddVector.add(11); oddVector.add(7); oddVector.add(3); oddVector.add(5); //print the vector elements System.out.println('Vector elements: '+oddVector); //sort vector using Collections.sort method Collections.sort(oddVector); //print sorted vector System.out.println('Vector elements after sorting: '+oddVector); } }
산출:
위의 프로그램은 홀수 벡터를 생성합니다. 그런 다음 Collections.sort () 메서드를 사용하여 Vector가 정렬됩니다.
2D (2 차원) 벡터
2D 벡터는 각 요소를 벡터로 포함하는 벡터입니다. '벡터의 벡터'라고도합니다.
아래의 예는 2D 벡터를 보여줍니다.
import java.util.*; public class Main { public static void main(String args()) { //define and initialize a vector Vector inner_vec = new Vector(); inner_vec.add('Software'); inner_vec.add('Testing'); inner_vec.add('Java'); inner_vec.add('Tutorials'); //define another vector and add first vector to it. Vector outer_vec = new Vector(); outer_vec.add(inner_vec); String str; //display the contents of vector of vectors System.out.println('Contents of vector of vectors:'); for(int i=0;i 산출:
위의 프로그램에는 4 개의 요소로 구성된 Vector가 있습니다. 그런 다음 다른 벡터를 선언하고 이전 벡터를 두 번째 벡터에 요소로 추가합니다. 벡터의 요소에 액세스하는 방법에 유의하십시오. for 루프를 구성하면 외부 벡터의 첫 번째 요소 (인덱스 0)가 첫 번째 또는 내부 벡터라는 결론을 내릴 수 있습니다.
따라서 루프에서 외부 벡터의 인덱스를 0으로 유지하고 내부 벡터를 반복하여 모든 요소를 표시합니다.
벡터를 배열로 변환
Vector를 배열로 변환하는 다음 예제를 살펴 보겠습니다. Vector를 배열로 변환하기 위해 Vector 클래스의 'toArray'메서드를 사용합니다.
다음 프로그래밍 예제에서 , 벡터 문자열을 선언하고 여기에 요소를 추가합니다. 그런 다음 Vector 클래스의 toArray 메서드를 사용하여 string 형 배열 객체를 인수로 전달하여 Vector를 String 배열로 변환합니다.
import java.util.Vector; public class Main { public static void main(String() args) { // Create a Vector of String elements Vector color_vector = new Vector(); // Add elements to Vector color_vector.add('Violet'); color_vector.add('Indigo'); color_vector.add('Blue'); color_vector.add('Green'); color_vector.add('Yellow'); color_vector.add('Orange'); color_vector.add('Red'); //Convert Vector to String Array using toArray method String() colorsArray = color_vector.toArray(new String(color_vector.size())); //print Array Elements System.out.println('String Array Elements :'); for(String val:colorsArray){ System.out.print(val + ' '); } } }
산출:
벡터 대 배열
다음은 벡터와 배열의 차이점 중 일부입니다.
벡터 정렬 용량이 증가하면 추가 스토리지를 예약합니다. 추가 저장 용량을 예약하지 않습니다. 벡터는 동적이며 요소가 추가되거나 제거 될 때 크기가 늘어나거나 줄어 듭니다. 배열은 정적이며 일단 선언되면 크기가 고정됩니다. 벡터는 객체 만 저장할 수 있습니다. 배열은 기본 유형과 객체를 저장할 수 있습니다. 크기를 결정하는 size () 메서드를 제공합니다. 길이를 결정하는 길이 속성을 제공합니다. 개념 차원은 없지만 일반적으로 2d 벡터라고하는 벡터의 벡터로 생성 할 수 있습니다. 배열은 차원을 지원합니다. 벡터가 동기화됩니다. 어레이가 동기화되지 않았습니다. 벡터는 배열보다 느립니다. 어레이가 더 빠릅니다. 제네릭을 지원하여 형식 안전성을 보장합니다. 일반 지원이 없습니다.
벡터 대 ArrayList
이 섹션에서는 Java에서 Vector와 ArrayList의 차이점에 대해 설명합니다.
벡터 ArrayList 벡터에는 증가 할 수있는 벡터 크기를 사용하는 증가 크기가 있습니다. ArrayList는 증분 크기를 제공하지 않습니다. Java (JDK 1.0 버전) 초기 버전부터 존재합니다. JDK 1.2부터 Java에 도입 됨 Vector는 Java의 레거시 클래스입니다. ArrayList는 Java Collections Framework의 일부입니다. 벡터는 용량에 도달하면 두 배로 커집니다. ArrayList는 용량에 도달하면 크기가 절반으로 늘어납니다. 벡터 방법은 동기화됩니다. ArrayList가 동기화되지 않았습니다. 벡터는 순회에 Enumerator 및 Iterator를 사용합니다. ArrayList는 Iterator 만 사용합니다. 벡터 연산이 느립니다. ArrayList가 더 빠릅니다. Vector는 스레드로부터 안전하므로 여러 스레드에서 Vector를 사용할 수 있으며 안전합니다. ArrayList는 스레드로부터 안전하지 않습니다.
자주 묻는 질문
Q # 1) Java에서 벡터 란 무엇입니까?
대답: Java에서 Vector는 확장 가능한 객체 배열로 정의 할 수 있습니다. 배열과 유사하게 벡터 요소는 인덱스를 사용하여 액세스 할 수도 있습니다.
Q # 2) 벡터는 Java로 정렬됩니까?
대답: 예. Vector는 정렬되고 요소의 삽입 순서를 유지합니다.
Q # 3) Vector는 Java에서 스레드로부터 안전합니까?
대답: 예. Java에서 Vector 클래스는 스레드로부터 안전합니다. Vector 클래스가 동기화되면 스레드로부터 안전합니다. 즉, 여러 스레드에서 Vector 클래스를 사용할 수 있으며 안전합니다.
Q # 4) Java에서 벡터를 사용하는 이유는 무엇입니까?
대답: Vector가 Java에서 사용되는 가장 중요한 이유는 Vector가 자동으로 확장 및 축소되기 때문입니다. 그들은 배열보다 선호되기 때문에 동적입니다.
Q # 5) ArrayList 또는 vector 중 어느 것이 더 낫습니까?
대답: Vector가 동기화되고 속도가 느리기 때문에 Vector에 비해 성능 측면에서 ArrayList가 더 빠릅니다.
결론
이 자습서에서는 Java의 벡터 데이터 구조로 시작했습니다. 벡터는 익숙한 인덱스를 사용하여 Vector 요소에 액세스하는 배열과 거의 유사합니다. 벡터는 동적 배열이라고하며 배열과 달리 벡터 크기는 자동으로 늘어나거나 줄어 듭니다.
또한 벡터에는 향후 추가를 위해 추가 스토리지를 만들고 예약하는 데 사용할 수있는 용량 및 증분 기능이 있습니다. Vector는 Java의 java.util 패키지에있는 레거시 클래스이며 스레드로부터 안전 할뿐만 아니라 동기화됩니다.
따라서 동적 크기가 필요할 때와 다중 스레드 환경에서 작업 할 때 벡터를 선호해야합니다.
=> 독점적 인 Java 교육 자습서 시리즈를 보려면 여기를 방문하십시오.
추천 도서