Trieda Vector implementuje pestovateľné pole objektov. Vektory patria do starších tried, ale teraz sú plne kompatibilné s kolekciami. Nachádza sa v balík java.util a implementovať Zoznam rozhranie, takže môžeme použiť všetky metódy rozhrania Zoznam, ako je uvedené nižšie:
- Vector implementuje dynamické pole, čo znamená, že môže rásť alebo zmenšovať podľa potreby. Podobne ako pole obsahuje komponenty, ku ktorým je možné pristupovať pomocou celočíselného indexu.
- Veľmi sa podobajú na ArrayList , ale Vector je synchronizovaný a má niektoré staršie metódy, ktoré rámec kolekcie neobsahuje.
- Tiež udržiava poradie vloženia ako ArrayList. Napriek tomu sa zriedka používa v prostredí bez vlákien synchronizované a z tohto dôvodu podáva slabý výkon pri pridávaní, vyhľadávaní, odstraňovaní a aktualizácii svojich prvkov.
- Iterátory vrátené triedou Vector sú rýchle. V prípade súbežnej modifikácie zlyhá a vyhodí ConcurrentModificationException.
Syntax:
public class Vector extends AbstractList implements List, RandomAccess, Cloneable, Serializable>
Tu, A je typ prvku.
- Rozširuje sa AbstractList a náradie Zoznam rozhrania.
- Implementuje rozhrania Serializable, Cloneable, Iterable, Collection, List, RandomAccess.
- Priamo známa podtrieda je Stoh .
Dôležité body týkajúce sa prírastku vektorovej kapacity sú nasledovné:
Ak je zadaný prírastok, Vector sa podľa neho rozšíri v každom cykle pridelenia. Ak však prírastok nie je špecifikovaný, kapacita vektora sa v každom cykle prideľovania zdvojnásobí. Vektor definuje tri chránené dátové členy:
- int prírastok kapacity: Obsahuje prírastkovú hodnotu.
- int počet prvkov: Počet prvkov aktuálne vo vektore, ktoré sú v ňom uložené.
- Objekt elementData[]: Je v ňom uložené pole, ktoré drží vektor.
Bežné chyby v deklarácii vektorov sú ako nasleduje :
- Vektor hádže an IllegalArgumentException ak je počiatočná veľkosť definovaného vektora záporná.
- Ak je zadaná kolekcia null, vyhodí Výnimka NullPointerException .
Konštruktéri
1. Vektor(): Vytvorí predvolený vektor počiatočnej kapacity 10.
Vector v = new Vector();>
2. Vektor (veľkosť int): Vytvorí vektor, ktorého počiatočná kapacita je určená veľkosťou.
Vector v = new Vector(int size);>
3. Vektor(int size, int incr): Vytvorí vektor, ktorého počiatočná kapacita je určená veľkosťou a prírastok je určený prírastkom. Určuje počet prvkov, ktoré sa majú prideliť vždy, keď sa veľkosť vektora zmení smerom nahor.
nájsť v reťazci c++
Vector v = new Vector(int size, int incr);>
4. Vektor(kolekcia c): Vytvorí vektor, ktorý obsahuje prvky kolekcie c.
Vector v = new Vector(Collection c);>
Metódy v triede Vector
METÓDA | POPIS |
---|---|
pridať (a a) | Pripojí zadaný prvok na koniec tohto vektora. |
pridať (index int, prvok E) | Vloží zadaný prvok na zadanú pozíciu v tomto vektore. |
addAll(Kolekcia predlžuje E> c) | Pripojí všetky prvky v zadanej kolekcii na koniec tohto vektora v poradí, v akom ich vráti zadaný iterátor kolekcie. |
addAll(int index, Zbierka c) nastavenia webového prehliadača | Vložte všetky prvky v zadanej kolekcii do tohto vektora na zadanú pozíciu. |
addElement(E obj) | Pridá zadaný komponent na koniec tohto vektora a zväčší jeho veľkosť o jeden. |
kapacita() | Vráti aktuálnu kapacitu tohto vektora. |
jasný() | Odstráni všetky prvky z tohto vektora. |
klon() | Vráti klon tohto vektora. |
obsahuje (Objekt o) | Vráti hodnotu true, ak tento vektor obsahuje zadaný prvok. |
obsahuje všetko (kolekcia c) | Vráti hodnotu true, ak tento vektor obsahuje všetky prvky v zadanej kolekcii. |
copyInto ( Object [ ] anArray ) | Skopíruje komponenty tohto vektora do zadaného poľa. |
elementAt(int index) | Vráti komponent na zadanom indexe. |
prvky() | Vráti zoznam komponentov tohto vektora. |
sureCapacity (int minCapacity) | V prípade potreby zväčší kapacitu tohto vektora, aby sa zabezpečilo, že dokáže pojať aspoň taký počet komponentov, aký je určený argumentom minimálnej kapacity. |
rovná sa (Objekt o) | Porovná zadaný objekt s týmto vektorom na dosiahnutie rovnosti. |
firstElement() | Vráti prvú zložku (položku na indexe 0) tohto vektora. |
pre každého (spotrebiteľa super E> akcia) | Vykoná danú akciu pre každý prvok Iterable, kým nie sú spracované všetky prvky alebo kým akcia nevyvolá výnimku. |
získať (int index) | Vráti prvok na zadanej pozícii v tomto vektore. |
hashCode() | Vráti hodnotu hash kódu pre tento vektor. |
indexOf(Objekt o) | Vráti index prvého výskytu zadaného prvku v tomto vektore, alebo -1, ak tento vektor neobsahuje prvok. |
indexOf(Objekt o, int index) | Vráti index prvého výskytu zadaného prvku v tomto vektore pri vyhľadávaní vpred z indexu alebo vráti hodnotu -1, ak sa prvok nenájde. |
insertElementAt(E obj, int index) | Vloží zadaný objekt ako komponent do tohto vektora na zadaný index. |
je prázdny() | Testuje, či tento vektor nemá žiadne zložky. |
iterátor() | Vráti iterátor nad prvkami v tomto zozname v správnom poradí. |
lastElement() | Vráti posledný komponent vektora. |
lastIndexOf(Object o) | Vráti index posledného výskytu zadaného prvku v tomto vektore, alebo -1, ak tento vektor neobsahuje prvok. |
lastIndexOf(Objekt o, int index) | Vráti index posledného výskytu zadaného prvku v tomto vektore pri spätnom vyhľadávaní od indexu alebo vráti hodnotu -1, ak sa prvok nenájde. |
listIterator() | Vráti iterátor zoznamu nad prvkami v tomto zozname (v správnom poradí). |
listIterator(int index) | Vráti iterátor zoznamu nad prvkami v tomto zozname (v správnom poradí), počnúc od zadanej pozície v zozname. |
odstrániť (int index) | Odstráni prvok na zadanej pozícii v tomto vektore. |
odstrániť (Objekt o) | Odstráni prvý výskyt zadaného prvku v tomto vektore. Ak Vektor prvok neobsahuje, zostáva nezmenený. |
odstrániť všetko (kolekcia c) | Odstráni z tohto vektora všetky jeho prvky obsiahnuté v zadanej kolekcii. |
removeAllElements() | Odstráni všetky komponenty z tohto vektora a nastaví jeho veľkosť na nulu. |
removeElement(Object obj) | Odstráni prvý (najnižšie indexovaný) výskyt argumentu z tohto vektora. |
removeElementAt(int index) | Vymaže komponent v zadanom indexe. |
removeIf (Filter predikátov) | Odstráni všetky prvky tejto kolekcie, ktoré spĺňajú daný predikát. |
removeRange(int fromIndex, int toIndex) java číslo na reťazec | Odstráni z tohto zoznamu všetky prvky, ktorých index je medzi fromIndex, vrátane, a toIndex, bez. |
nahradiť všetko (operátor UnaryOperator) | Nahradí každý prvok tohto zoznamu výsledkom použitia operátora na daný prvok. |
ponechať všetko (kolekcia c) | Zachová iba prvky v tomto vektore obsiahnuté v špecifikovanej kolekcii. |
set(int index, prvok E) | Nahradí prvok na zadanej pozícii v tomto vektore zadaným prvkom. |
setElementAt(E obj, int index) | Nastaví komponent na zadaný index tohto vektora ako zadaný objekt. |
setSize (int newSize) | Nastaví veľkosť tohto vektora. |
veľkosť () | Vráti počet komponentov v tomto vektore. |
zoradiť (porovnávač c) | Zoradí tento zoznam podľa poradia vyvolaného zadaným porovnávačom. |
rozdeľovač() | Vytvorí rozdeľovač s oneskorenou väzbou a rýchlym zlyhaním nad prvkami v tomto zozname. |
subList(int fromIndex, int toIndex) | Vráti zobrazenie časti tohto zoznamu medzi fromIndex, vrátane, a toIndex, bez. |
toArray() | Vráti pole obsahujúce všetky prvky tohto vektora v správnom poradí. |
toArray(T[] a) | Vráti pole obsahujúce všetky prvky v tomto vektore v správnom poradí; typ runtime vráteného poľa je typ zadaného poľa. |
natiahnuť() | Vráti reťazcovú reprezentáciu tohto vektora obsahujúcu reťazcovú reprezentáciu každého prvku. |
trimToSize() | Skráti kapacitu tohto vektora na aktuálnu veľkosť vektora. |
Poďme najprv diskutovať a implementovať, ako vytvoriť a použiť Vektor predtým, ako pristúpime k metódam tejto triedy.
Príklad:
Java // Java Program to Demonstrate Working of Vector // Via Creating and Using It // Importing required classes import java.io.*; import java.util.*; // Main class class GFG { // Main driver method public static void main(String[] args) { // Size of the Vector int n = 5; // Declaring the Vector with // initial size n Vector v = nový vektor (n); // Pridanie nových prvkov na // koniec vektora for (int i = 1; i<= n; i++) v.add(i); // Printing elements System.out.println(v); // Remove element at index 3 v.remove(3); // Displaying the vector // after deletion System.out.println(v); // iterating over vector elements // using for loop for (int i = 0; i < v.size(); i++) // Printing elements one by one System.out.print(v.get(i) + ' '); } }>
Výkon
[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>
Poznámka:
- Ak nie je zadaný prírastok vektora, jeho kapacita sa zdvojnásobí v každom cykle prírastku.
- Kapacita vektora nemôže byť pod veľkosťou, môže sa jej rovnať.
Vykonávanie rôznych operácií na triede Vector v jazyku Java
Poďme diskutovať o rôznych operáciách na triede Vector, ktoré sú uvedené nasledovne:
- Pridávanie prvkov
- Aktualizácia prvkov
- Odstraňovanie prvkov
- Iterovanie cez prvky
Operácia 1: Pridávanie prvkov
Na pridanie prvkov do Vektora použijeme pridať () metóda. Táto metóda je preťažená na vykonávanie viacerých operácií na základe rôznych parametrov. Sú uvedené nižšie takto:
- pridať (Objekt): Táto metóda sa používa na pridanie prvku na koniec Vektora.
- add(int index, Object): Táto metóda sa používa na pridanie prvku na konkrétny index vo vektore.
Príklad:
Java // Java Program to Add Elements in Vector Class // Importing required classes import java.io.*; import java.util.*; // Main class // AddElementsToVector class GFG { // Main driver method public static void main(String[] arg) { // Case 1 // Creating a default vector Vector v1 = new Vector(); // Adding custom elements // using add() method v1.add(1); v1.add(2); v1.add('geeks'); v1.add('forGeeks'); v1.add(3); // Printing the vector elements to the console System.out.println('Vector v1 is ' + v1); // Case 2 // Creating generic vector Vector v2 = nový vektor (); // Pridanie vlastných prvkov // pomocou metódy add() v2.add(1); v2.add(2); v2.add(3); // Tlač vektorových prvkov do konzoly System.out.println('Vektor v2 je ' + v2); } }>
Výkon:
zreťaziť java reťazec
Vector v1 is [1, 2, geeks, forGeeks, 3] Vector v2 is [1, 2, 3]>
Operácia 2: Aktualizácia prvkov
Po pridaní prvkov, ak chceme prvok zmeniť, je možné to urobiť pomocou set() metóda. Keďže Vektor je indexovaný, na prvok, ktorý chceme zmeniť, odkazuje index prvku. Preto táto metóda vyžaduje vloženie indexu a aktualizovaného prvku do tohto indexu.
Príklad
Java // Java code to change the // elements in vector class import java.util.*; // Driver Class public class UpdatingVector { // Main Function public static void main(String args[]) { // Creating an empty Vector Vector vec_tor = nový vektor (); // Použite metódu add() na pridanie prvkov do vektora vec_tor.add(12); vec_tor.add(23); vec_tor.add(22); vec_tor.add(10); vec_tor.add(20); // Zobrazenie vektora System.out.println('Vektor: ' + vec_tor); // Použitie metódy set() na nahradenie 12 za 21 System.out.println('Objekt, ktorý je nahradený je: ' + vec_tor.set(0, 21)); // Použitie metódy set() na nahradenie 20 50 System.out.println('Objekt, ktorý je nahradený je: ' + vec_tor.set(4, 50)); // Zobrazenie upraveného vektora System.out.println('Nový vektor je:' + vec_tor); } }>
Výkon
Vector: [12, 23, 22, 10, 20] The Object that is replaced is: 12 The Object that is replaced is: 20 The new Vector is:[21, 23, 22, 10, 50]>
Operácia 3: Odstraňovanie prvkov
Na odstránenie prvku z vektora môžeme použiť odstrániť () metóda. Táto metóda je preťažená na vykonávanie viacerých operácií na základe rôznych parametrov. Oni sú:
- odstrániť (Objekt): Táto metóda sa používa na odstránenie objektu z vektora. Ak existuje viacero takýchto objektov, potom sa prvý výskyt objektu odstráni.
- remove(int index): Keďže Vektor je indexovaný, táto metóda nadobudne celočíselnú hodnotu, ktorá jednoducho odstráni prvok prítomný na tomto špecifickom indexe vo Vektore. Po odstránení prvku sa všetky prvky presunú doľava, aby vyplnili priestor a indexy objektov sa aktualizujú.
Príklad
Java // Java code illustrating the removal // of elements from vector import java.util.*; import java.io.*; class RemovingElementsFromVector { public static void main(String[] arg) { // Create default vector of capacity 10 Vector v = new Vector(); // Add elements using add() method v.add(1); v.add(2); v.add('Geeks'); v.add('forGeeks'); v.add(4); // Removing first occurrence element at 1 v.remove(1); // Checking vector System.out.println('after removal: ' + v); } }>
Výkon:
after removal: [1, Geeks, forGeeks, 4]>
Operácia 4: Iterácia vektora
Existuje niekoľko spôsobov, ako iterovať cez Vector. Najznámejšími spôsobmi je použitie základného cyklu for v kombinácii s a dostať () metóda na získanie prvku na konkrétnom indexe a pokročilé pre slučku .
Príklad
koľko rokov má kylie jennerJava
// Java program to iterate the elements // in a Vector import java.util.*; public class IteratingVector { public static void main(String args[]) { // create an instance of vector Vectorv = new Vector(); // Pridanie prvkov pomocou metódy add() v.add('Geeks'); v.add('Geeks'); v.add(1, 'Pre'); // Pomocou metódy Get a cyklu // for for (int i = 0; i< v.size(); i++) { System.out.print(v.get(i) + ' '); } System.out.println(); // Using the for each loop for (String str : v) System.out.print(str + ' '); } }>
Výkon
Geeks For Geeks Geeks For Geeks>
Poznámka: Dajte si prečítať Trieda ArrayList vs Vector v Jave aby som to lepšie pochopil.
V Jave je trieda Vector súčasťou Java Collections Framework a poskytuje implementáciu dynamického poľa rozhrania List. Bol pridaný v pôvodnom vydaní Java (Java 1.0) a poskytuje množstvo metód na manipuláciu s prvkami vektora, vrátane pridávania, vkladania a odstraňovania prvkov.
Tu je jednoduchý príklad, ktorý ukazuje, ako používať Vector v Jave:
Java import java.util.Vector; public class VectorExample { public static void main(String[] args) { // Create a new vector Vector v = nový vektor(3, 2); // Pridanie prvkov do vektora v.addElement(1); v.addElement(2); v.addElement(3); // Vloženie prvku na index 1 v.insertElementAt(0, 1); // Odstránenie prvku na indexe 2 v.removeElementAt(2); // Vypíše prvky vektora for (int i : v) { System.out.println(i); } } }>
Výkon
1 0 3>
Všimnite si, že trieda Vector je synchronizovaná, čo znamená, že viaceré vlákna môžu pristupovať k rovnakému vektoru bez toho, aby spôsobovali problémy. Táto synchronizácia je však na úkor výkonu, takže ak nepotrebujete zdieľať vektor medzi viacerými vláknami, vo všeobecnosti je lepšie použiť alternatívnu triedu, ako je ArrayList, ktorá nie je synchronizovaná.
Výhody použitia Vector v Jave:
- Synchronizácia: Ako už bolo spomenuté, Vector je synchronizovaný, vďaka čomu je bezpečné ho používať vo viacvláknovom prostredí.
- Dynamická veľkosť: Veľkosť vektora sa môže dynamicky zväčšovať alebo zmenšovať pri pridávaní alebo odstraňovaní prvkov, takže si nemusíte robiť starosti s nastavením počiatočnej veľkosti, ktorá pojme všetky prvky.
- Podpora starších verzií: Vector je súčasťou jazyka Java od jeho počiatku a stále je podporovaný, takže je to dobrá voľba, ak potrebujete pracovať so starším kódom Java, ktorý používa Vector.
Nevýhody použitia Vector v Jave:
- Výkon: Synchronizácia vo Vector môže viesť k pomalšiemu výkonu v porovnaní s inými triedami kolekcií, ako je napríklad ArrayList.
- Starší kód: Hoci je Vector stále podporovaný, novší kód Java sa často píše pomocou modernejších tried kolekcií, takže môže byť ťažšie nájsť príklady a podporu pre Vector.
- Zbytočná réžia: Ak nepotrebujete synchronizačné funkcie Vector, ich používanie pridá vášmu kódu zbytočnú réžiu.
Príručka
Dobrou referenčnou knihou na učenie sa o Java Collections Framework a Vector je Java Collections od Naftalin a Wadler. Táto kniha poskytuje komplexný pohľad na rámec kolekcií Java vrátane Vector a obsahuje mnoho príkladov a cvičení, ktoré vám pomôžu pochopiť, ako tieto triedy efektívne používať.