Այս ձեռնարկը բացատրում է ամեն ինչ Java-ում վեկտորային տվյալների կառուցվածքի մասին օրինակներով: Դուք կսովորեք ստեղծել, սկզբնական, տեսակավորել & amp; Օգտագործեք Java վեկտորը ձեր ծրագրերում.
Վեկտորը կարող է սահմանվել որպես դինամիկ զանգված, որը կարող է ինքնուրույն աճել կամ փոքրանալ, այսինքն՝ վեկտորը կաճի, երբ դրան ավելացվեն ավելի շատ տարրեր և կփոքրանա, երբ տարրերը: հեռացվում են դրանից:
Այս վարքագիծը տարբերվում է ստատիկ զանգվածների վարքագծից: Սակայն զանգվածների նման, վեկտորային տարրերին կարելի է մուտք գործել՝ օգտագործելով ամբողջ թվային ինդեքսներ:
Վեկտորը կարող է դիտվել որպես այլ դինամիկ զանգվածի տվյալների կառուցվածքի նման, ArrayList բացառությամբ ստորև նշված երկու տարբերությունները.
- Վեկտորը համաժամանակացված է, այսինքն՝ վեկտորի բոլոր մեթոդները նշվում են «համաժամեցված» և, հետևաբար, երբ մեթոդը կանչվում է, նույն մեթոդը չի կարող կանչվել, քանի դեռ նախորդ կանչը չի եղել: ավարտվեց:
- Վեկտորային դասն ունի բազմաթիվ մեթոդներ, որոնք հավաքածուների շրջանակի մաս չեն, այլ նրա ժառանգական մեթոդները:
Java Vector Class
Vector դասը. բացի « java.util » փաթեթից և իրականացնում է List ինտերֆեյս: Վեկտորը առարկաների կամ օբյեկտների վեկտորի զանգված է:
Վեկտոր դասի դասի հայտարարագիրը տրված է ստորև. java.lang.object » և իրականացնում է List, Cloneable և Serializable միջերեսներ:
Ինչպե՞ս ստեղծել վեկտոր Java-ում:
Դուք կարող եքստեղծել վեկտորի օբյեկտ՝ օգտագործելով վեկտորի կառուցման հետևյալ մեթոդներից որևէ մեկը: 18> vector() Սա Vector դասի լռելյայն կոնստրուկտորն է։ Այն ստեղծում է դատարկ վեկտոր՝ 10 չափսով: վեկտոր (int originalCapacity) Այս գերբեռնված կոնստրուկտորը կառուցում է դատարկ վեկտորային օբյեկտ՝ հզորությամբ = սկզբնական հզորություն: վեկտոր (int originalCapacity, int capacity Increment) Այս կոնստրուկտորային մեթոդը ստեղծում է վեկտորի դատարկ օբյեկտ` նշված սկզբնական հզորությամբ և հզորության ավելացումով: Վեկտոր( Հավաքածու գ) Վեկտորային օբյեկտը ստեղծվում է նշված հավաքածուի սկզբնական տարրերով c:
Եկեք նայենք կոնստրուկտորներից յուրաքանչյուրին` վեկտորի օբյեկտները սկզբնավորելու համար: Սա Vector դասի լռելյայն կոնստրուկտորն է: Երբ դուք կանչում եք այս կոնստրուկտորը, ստեղծվում է 10 լռելյայն չափի վեկտոր օբյեկտ:
Այս մեթոդի ընդհանուր շարահյուսությունը հետևյալն է.
Վեկտորային օբյեկտ = new Vector();
Օրինակ,
Vector vec1 = new Vector ();
Վերոնշյալ հայտարարությունը ստեղծում է նոր վեկտոր 'vec1' 10 չափսով:
(ii) Վեկտոր (int սկզբնական հզորություն)
Վեկտոր դասի գերբեռնված կոնստրուկտորն ընդունում է «սկզբնական հզորությունը» որպես արգումենտ: Այս կոնստրուկտորը ստեղծում է վեկտորօբյեկտ նշված հզորությամբ:
Մեթոդի ընդհանուր շարահյուսությունը հետևյալն է.
Vector object = new Vector (initialCapacity);
Օրինակ,
Vector vec1 = new Vector (10);
Վերոնշյալ ծրագրավորման դրույթը կստեղծի «vec1» վեկտորային օբյեկտ՝ 10 տարողությամբ, այսինքն՝ այս վեկտորը կարող է պահել մինչև 10: տարրեր։
(iii) Վեկտոր (int originalCapacity, int capacity)
Սա Vector դասի ևս մեկ ծանրաբեռնված կոնստրուկտոր է և ստեղծում է Vector օբյեկտ՝ նշված սկզբնականով։ տարողունակություն և ավելացում:
Այս մեթոդի ընդհանուր շարահյուսությունը հետևյալն է.
Օրինակ,
Vector vec1 = new Vector(5,10);
Վերոնշյալ հայտարարության մեջ վեկտորի սկզբնական հզորությունը 5 է, իսկ աճը` 10: Սա նշանակում է, երբ 6-րդ տարրը տեղադրվում է վեկտորի մեջ, վեկտորի հզորությունը կավելացվի մինչև 15 (5 + 10): Նմանապես, երբ 16-րդ տարրը տեղադրվի, վեկտորի վեկտորային հզորությունը կավելացվի մինչև 25 (15 +10):
(iv) Վեկտոր (հավաքածու գ)
Vector դասի վերջին գերբեռնված կոնստրուկտորը ընդունում է նախապես սահմանված հավաքածուն որպես արգումենտ և ստեղծում է վեկտոր՝ այս հավաքածուի բոլոր տարրերով որպես իր տարրեր:
Ընդհանուր շարահյուսությունը հետևյալն է.
Վեկտորային օբյեկտ = նոր վեկտոր (հավաքածու գ);
Օրինակ,
Vector vec1 = new Vector(aList); where aList = {1,2,3,4,5};
Այնվերը նշված դրույթը կստեղծի «vec1» վեկտոր՝ սկզբնական տարրերով՝ {1,2,3,4, 5}:
Այս բոլոր նկարագրությունները նկատի ունենալը թույլ կտա մեզ իրականացնել Վեկտորային ծրագիր՝ այս կոնստրուկտորներն ավելի լավ հասկանալու համար:
Վեկտորային մեթոդներ Java-ում
Հետևյալը այն մեթոդներն են, որոնք աջակցվում են Java-ում Vector դասի կողմից:
Մեթոդի անվանումը | Նախատիպ | Նկարագրություն |
---|---|---|
add | Boolean add(E e) | Ավելացնում է տրված տարրը վեկտորի վերջում: |
Vid add(int index, E տարր) | Ավելացրեք տարր վեկտորին նշված ինդեքսով: | |
addAll | Բուլյան addAll(Clection c) | Ավելացնում է բոլոր տարրերը տվյալ հավաքածուից վեկտորի վերջում: |
Բուլյան addAll(int index, Collection c) | Ավելացնում է բոլոր տարրերը նշված հավաքածուում նշված ինդեքսում: | |
addElement | void addElement(E obj) | Ավելացնում է նշված տարրը ժամը վեկտորի վերջը՝ մեծացնելով վեկտորի չափը: |
Հզորությունը | Int հզորությունը() | Վերադարձնում է ընթացիկ հզորությունը վեկտորը: |
Clear | Void clear() | Մաքրում է վեկտորը իր տարրերից: |
Կլոն | Օբյեկտի կլոն() | Կլոնավորում է վեկտորը: |
Պարունակում է | Բուլյան պարունակում է(Օբյեկտ o) | Ստուգում է արդյոք վեկտորը պարունակում էնշված տարրը: |
պարունակում է բոլորը | Բուլյան պարունակում է բոլորը(Clection c) | Ստուգում է արդյոք վեկտորը պարունակում է բոլոր տարրերը, որոնք առկա են տրված հավաքածու: |
copyInto | Void copyInto(Object[] anArray) | Պատճենում է վեկտորային տարրերը տվյալ զանգվածում: |
ElementAt | E ElementAt(int ինդեքս) | Վերադարձնում է վեկտորային տարրը նշված ինդեքսում։ |
Elements | Enumerationelements() | Վերադարձնում է թվարկված բաղադրիչները վեկտորի համար: |
sureCapacity | Vid sureCapacity(int minCapacity) | Բարձրացնում է վեկտորի կարողությունը սահմանված նվազագույն հզորությունը բավարարելու համար: |
Մեթոդի անվանումը | Նախատիպ | Նկարագրություն |
---|---|---|
Հավասար է | Բուլյան հավասար է(Օբյեկտ o) | Համեմատում է ընթացիկ վեկտորը նշված վեկտորի հետ` ստուգելու, թե արդյոք դրանք հավասար են: |
firstElement | E firstElement() | Վերադարձնում է վեկտորի առաջին տարրը 0 ինդեքսում: |
Get | E get(int index) | Վերադարձնում է վեկտորի տարրը նշված ինդեքսում: |
hashCode | int hashCode() | Վերադարձնում է վեկտորի հեշ կոդի արժեքը: |
indexOf | int indexOf(Object o) | գտնում է վեկտորում տվյալ տարրի առաջին հայտնվելու ինդեքսը; -1 եթետարրը բացակայում է վեկտորում: |
int indexOf(Object o, int index) | Որոնում է վեկտորը տվյալ ինդեքսից առաջ ուղղությամբ նշված տարրի համար;վերադարձնում է ինդեքս, եթե տարրը գտնվել է այլ կերպ -1, եթե տարրը չի գտնվել: | |
insertElementAt | Void insertElementAt(E obj, int index) | Տրված ինդեքսի վրա տեղադրում է տրված օբյեկտը վեկտորի մեջ: |
isEmpty | Բուլյան isEmpty() | Ստուգում է, արդյոք վեկտորը դատարկ է: |
Iterator | Iteratoriterator() | Վերադարձնում է կրկնողություն, որն օգտագործվում է անցնել վեկտորի տարրերի վրայով: |
lastElement | E lastElement() | Վերադարձնում է վեկտորի վերջին տարրը . |
lastIndexOf | Int lastIndexOf(Օբյեկտ o) | Փնտրում է վեկտորը տվյալ տարրի վերջին հայտնվելու համար և վերադարձնում ինդեքսը, կամ վերադարձնում է -1 տարրը չի գտնվել: |
Int lastIndexOf(Object o, int index) | Սկսում է որոնել տվյալ տարրի վերջին դեպքը տրված ցուցանիշը հետընթաց. Վերադարձնում է ինդեքսը, եթե տարրը գտնվի, այլապես վերադարձնում է -1: | |
listIterator | ListIteratorlistIterator() | Վերադարձնում է ցուցակի կրկնող վեկտորի տարրերի վրա: |
ListIteratorlistIterator(int index) | Վերադարձնում է ցուցակի կրկնողությունը վեկտորի տարրերի վրա՝ սկսած տրվածիցինդեքս. |
Մեթոդի անվանումը | Նախատիպ | Նկարագրություն |
---|---|---|
Հեռացնել | E remove(int index) | Ջնջում է վեկտորից տվյալ ինդեքսի տարրը: |
Բուլյան հեռացնել(Օբյեկտ o) | Ջնջում է վեկտորից տվյալ տարրի առաջին հայտնվելը: Եթե տարրը չկա, ոչինչ չի պատահում վեկտորի հետ | |
removeAll | Boolean removeAll(Clection c) | Ջնջում է վեկտորի բոլոր տարրերը, որոնք առկա են տվյալ հավաքածուում։ |
void removeAll Elements() | Ջնջում է բոլոր վեկտորային տարրերը՝ այդպիսով նվազեցնելով զրոյի չափը։ | |
removeElement | Բուլյան removeElement(Object obj) | Հեռացնում է տվյալ տարրի առաջին դեպքը վեկտորից: |
void removeElementAt(int index) | Ջնջում է տարրը տվյալ ինդեքսում: | |
removeRange | պաշտպանված void removeRange(int fromIndex, int toIndex) | Ջնջում է բոլոր տարրերը վեկտորից տվյալ տիրույթում fromIndex (ներառյալ), totoIndex (բացառիկ): |
retainAll | Boolean retainAll(Clection c) | Ի տարբերություն «removeAll» մեթոդի retainAll-ը պահպանում է տարրեր Վեկտորում, որոնք համապատասխանում են նշված հավաքածուի տարրերին: |
set | E set(int index , E տարր) | Նոր տարրով սահմանում է արժեքը տվյալ ինդեքսումտրամադրված է։ |
Void set ElementAt(E obj, int index) | Տրված տարրերը սահմանում է տվյալ ինդեքսում։ | |
setSize | Void setSize(int newSize) | Սահմանում է այս վեկտորի համար տրված չափը: |
Size | int size() | Վերադարձնում է այս վեկտորի տարրերի թիվը կամ վեկտորի երկարությունը: |
ենթացանկ | ListsubList(intfromIndex, inttoIndex) | Վերադարձնում է վեկտորի տեսքը կամ ենթացանկը, որը տատանվում է Index-ից մինչև Index: |
toArray | Object[] toArray: () | Տրված վեկտորը փոխակերպում է զանգվածի, որը պարունակում է բոլոր վեկտորային տարրերը տրված հերթականությամբ: |
T[] toArray(T[] a) | Վերադարձնում է նշված տիպի զանգված, որը պարունակում է բոլոր վեկտորային տարրերը: | |
toString | String 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); } }
Ելք`
Վերոնշյալ ծրագիրն իր մեջ ունի չորս վեկտոր: Առաջին v1-ը ստեղծվում է լռելյայն կոնստրուկտորով: Երկրորդ վեկտորը ստեղծվում է 20 նախնական հզորությամբ: Այնուհետև v2-ին ավելացվում են մի քանի տարրեր: Երրորդ վեկտորը ստեղծվում է 30 սկզբնական հզորությամբ և ավելացումով10.
Այնուհետև մենք ստեղծում ենք ArrayList և ստեղծում չորրորդ վեկտորը v4՝ ArrayList-ով որպես արգումենտ: Վերջապես, մենք ցուցադրում ենք այս վեկտորներից յուրաքանչյուրի բովանդակությունը:
Նշեք չորրորդ վեկտորի բովանդակությունը 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("\nFirstoccurence of element 4 removed: "+evenVector.remove((Integer)4)); //Display the vector System.out.println("\nVector contents after remove operation: " +evenVector); //Remove the element at index 4 & display the vector System.out.println("\nRemove element at index 4: " +evenVector.remove(4)); System.out.println("\nVector contents after remove: " +evenVector); //hashcode for the vector System.out.println("\nHash code of the vector = "+evenVector.hashCode()); //Get the element at index 1 System.out.println("\nElement at index 1 is = "+evenVector.get(1)); } }
Ելք՝
Վերցնենք մեկ այլ վեկտորի օրինակ։ Այս ծրագրում մենք օգտագործելու ենք լարային վեկտոր : Մենք շահարկում ենք այս վեկտորը՝ ավելացնելով տարրեր, այնուհետև տպում ենք դրա չափն ու հզորությունը:
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("\nVector Elements are:"); while(fruits_enum.hasMoreElements()) System.out.print(fruits_enum.nextElement() + " "); } }
Ելք.
Տեսակավորել վեկտորը
Դուք կարող եք նաև տեսակավորել վեկտորը ըստ որոշակի հերթականության: Վեկտորը տեսակավորելու համար դուք պետք է օգտագործեք 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() մեթոդով Վեկտորը տեսակավորվում է:
2D (երկչափ) վեկտոր
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թ.Output:
In the above program, we have a Vector of four elements. Then, we declare another vector and add the previous vector as an element to the second vector. Note the way the elements of the vector is accessed. Form the for loop, you can conclude that the outer vector’s first element (at index 0) is the first or inner vector.
Thus, in the loop, we keep the index of the outer vector as 0 and loop through the inner vector to display all the elements.
Convert Vector To Array
Let’s consider the following example of converting a Vector to an array. To convert a Vector to an Array, we make use of the ‘toArray’ method of the Vector class.
In the following programming example , we declare a string Vector and add elements to it. Then using the toArray method of the Vector class, we convert the Vector to a String array by passing the string array object as an argument.
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 + " "); } } }Output:
Vector vs Array
Enlisted below are some of the differences between a Vector and an Array.
Vector Array Vector is dynamic and its size grows and shrinks as elements are added or removed. Arrays are static and its size remains fixed once declared. Vectors can store only objects. Arrays can store primitive types as well as objects. It provides a size() method to determine the size. Provides length property to determine the length. No concept dimensions but can be created as a vector of vectors, normally called 2d vector. Arrays support dimensions. Vector is synchronized. The array is not synchronized. Vector is slower than the array. Array is faster. Reserves additional storage when capacity is incremented. Does not reserve any additional storage. Ensures type safety by supporting generics. No generic support. Vector vs ArrayList
This section discusses the difference between Vector and ArrayList in Java.
Vector ArrayList Present since the initial version of Java(JDK 1.0 version). Introduced in Java since JDK 1.2 Vector is a legacy class of Java. ArrayList is a part of the Java Collections Framework. Vector grows double its size when its capacity is reached. ArrayList grows by half the size when its capacity is reached. Vector methods are synchronized. ArrayList is not synchronized. Vector uses Enumerator and Iterator for traversing. ArrayList uses only Iterator. Vector operations are slower. ArrayList is faster. Vector has increment size using which vector size can be increased. ArrayList does not provide increment size. Vector is thread-safe which means using Vector from multiple threads is permitted and is safe. ArrayList is not thread-safe. Frequently Asked Questions
Q #1) What is a Vector in Java?
Answer: In Java, a Vector can be defined as a growable array of objects. Similar to arrays, Vector elements can also be accessed using indices.
Q #2) Is vector ordered in Java?
Answer: Yes. A Vector is ordered and maintains the inserting order for elements.
Q #3) Is Vector thread-safe in Java?
Answer: Yes. In Java the Vector class is thread-safe. As the Vector class is synchronized, it makes it thread-safe i.e. you can use the Vector class from multiple threads and it is safe.
Q #4) Why do we use vector in Java?
Answer: The most important reason for which Vector is used in Java is that a Vector grows and shrinks automatically. They are dynamic because of which they are preferred over arrays.
Q #5) Which is better – ArrayList or vector?
Answer: Performance-wise ArrayList is faster when compared to Vector as Vector is synchronized and makes it slower.
Conclusion
In this tutorial, we started with the Vector data structure in Java. Vectors are almost similar to an array in which the Vector elements are accessed using familiar indices. Vectors are called dynamic array and unlike arrays, the Vector size grows and shrinks automatically.
Vectors also have the capacity and increment features that can be used to create and reserve additional storage for future additions. Vector is a legacy class in java.util package of Java and is synchronized as well as thread-safe.
Thus, we should prefer vectors when we need dynamic size and also while we are working in a multi-threaded environment.