logo

Vector Class v Javě

Třída Vector implementuje rozšiřitelné pole objektů. Vektory spadají do starších tříd, ale nyní je plně kompatibilní s kolekcemi. Nachází se v balíček java.util a implementovat Seznam rozhraní, takže můžeme použít všechny metody rozhraní Seznam, jak je uvedeno níže:

Vector Class v Javě



  • Vector implementuje dynamické pole, což znamená, že může růst nebo zmenšovat podle potřeby. Stejně jako pole obsahuje komponenty, ke kterým lze přistupovat pomocí celočíselného indexu.
  • Jsou velmi podobné ArrayList , ale Vector je synchronizovaný a má některé starší metody, které framework kolekce neobsahuje.
  • Také udržuje pořadí vložení jako ArrayList. Přesto se zřídka používá v prostředí bez vláken synchronizované a díky tomu podává slabý výkon při přidávání, vyhledávání, mazání a aktualizaci svých prvků.
  • Iterátory vrácené třídou Vector jsou rychlé při selhání. V případě souběžné modifikace selže a vyhodí ConcurrentModificationException.

Syntax:

public class Vector extends AbstractList implements List, RandomAccess, Cloneable, Serializable>

Tady, A je typ prvku.

  • Prodlužuje se AbstractList a nářadí Seznam rozhraní.
  • Implementuje rozhraní Serializable, Cloneable, Iterable, Collection, List, RandomAccess.
  • Přímo známá podtřída je Zásobník .

Důležité body týkající se přírůstku vektorové kapacity jsou následující:



Pokud je přírůstek zadán, Vector se podle něj rozšíří v každém alokačním cyklu. Pokud však přírůstek není zadán, kapacita vektoru se v každém alokačním cyklu zdvojnásobí. Vektor definuje tři chráněné datové členy:

  • int přírůstek kapacity: Obsahuje hodnotu přírůstku.
  • int počet prvků: Počet prvků aktuálně uložených ve vektoru.
  • Objekt elementData[]: Je v něm uloženo pole, které drží vektor.

Běžné chyby v deklaraci vektorů jsou jako následuje :

  • Vektor hází an IllegalArgumentException pokud je počáteční velikost definovaného vektoru záporná.
  • Pokud je zadaná kolekce null, vyvolá to Výjimka NullPointerException .

Konstruktéři

1. Vektor(): Vytvoří výchozí vektor počáteční kapacity 10.



Vector v = new Vector();>

2. Vektor (velikost int): Vytvoří vektor, jehož počáteční kapacita je určena velikostí.

Vector v = new Vector(int size);>

3. Vektor(int size, int incr): Vytvoří vektor, jehož počáteční kapacita je určena velikostí a přírůstek je určen incr. Určuje počet prvků, které se mají přidělit pokaždé, když se velikost vektoru změní směrem nahoru.

pandy vytvářející datový rámec
Vector v = new Vector(int size, int incr);>

4. Vektor(kolekce c): Vytvoří vektor, který obsahuje prvky kolekce c.

Vector v = new Vector(Collection c);>

Metody ve třídě Vector

METODA

POPIS

np.nuly
přidat (a a) Připojí zadaný prvek na konec tohoto vektoru.
add (index int, prvek E) Vloží určený prvek na zadanou pozici v tomto vektoru.

addAll(Kolekce

rozšiřuje E> c)

Připojí všechny prvky v zadané kolekci na konec tohoto vektoru v pořadí, v jakém je vrátí zadaný iterátor kolekce.

addAll(int index,

sbírka c)

Vložte všechny prvky v zadané kolekci do tohoto vektoru na zadanou pozici.
addElement(E obj) Přidá zadanou komponentu na konec tohoto vektoru a zvětší její velikost o jednu.
kapacita() Vrátí aktuální kapacitu tohoto vektoru.
Průhledná() Odebere všechny prvky z tohoto vektoru.
klon() Vrátí klon tohoto vektoru.
obsahuje (Objekt o) Vrátí hodnotu true, pokud tento vektor obsahuje zadaný prvek.
obsahuje vše (kolekce c) Vrátí hodnotu true, pokud tento vektor obsahuje všechny prvky v zadané kolekci.
copyInto ( Object [ ] anArray ) Zkopíruje komponenty tohoto vektoru do zadaného pole.
elementAt(int index) Vrátí komponentu na zadaném indexu.
Prvky() Vrátí výčet složek tohoto vektoru.
secureCapacity (int minCapacity) Zvýší kapacitu tohoto vektoru, je-li to nutné, aby bylo zajištěno, že pojme alespoň počet komponent zadaný argumentem minimální kapacity.
rovná se (objekt o) Porovná zadaný objekt s tímto vektorem pro dosažení rovnosti.
firstElement() Vrátí první komponentu (položku na indexu 0) tohoto vektoru.

pro každého (spotřebitele

super E> akce)

Provede danou akci pro každý prvek Iterable, dokud nejsou zpracovány všechny prvky nebo akce nevyvolá výjimku.
get(int index) Vrátí prvek na zadané pozici v tomto vektoru.
hashCode() Vrátí hodnotu hash kódu pro tento vektor.
indexOf(Objekt o)

Vrátí index prvního výskytu zadaného prvku v tomto vektoru,

nebo -1, pokud tento vektor prvek neobsahuje.

indexOf(Objekt o, int index) Vrátí index prvního výskytu zadaného prvku v tomto vektoru, vyhledá vpřed z indexu, nebo vrátí -1, pokud prvek nebyl nalezen.
insertElementAt(E obj, int index) Vloží zadaný objekt jako komponentu do tohoto vektoru na zadaný index.
je prázdný() Testuje, zda tento vektor nemá žádné komponenty.
iterátor() Vrátí iterátor nad prvky v tomto seznamu ve správném pořadí.
lastElement() Vrátí poslední složku vektoru.
lastIndexOf(Objekt o)

Vrátí index posledního výskytu zadaného prvku v tomto vektoru,

nebo -1, pokud tento vektor prvek neobsahuje.

lastIndexOf(Objekt o, int index) Vrátí index posledního výskytu zadaného prvku v tomto vektoru při vyhledávání zpět od indexu, nebo vrátí -1, pokud prvek nebyl nalezen.
listIterator() Vrátí iterátor seznamu nad prvky v tomto seznamu (ve správném pořadí).
listIterator(int index)

Vrátí iterátor seznamu nad prvky v tomto seznamu (ve správném pořadí),

začínající na zadané pozici v seznamu.

odstranit (int index) Odebere prvek na zadané pozici v tomto vektoru.
odstranit (objekt o) Odebere první výskyt zadaného prvku v tomto vektoru. Pokud Vektor prvek neobsahuje, je nezměněn.
odstranit vše (kolekce c) Odebere z tohoto vektoru všechny jeho prvky obsažené v zadané kolekci.
removeAllElements() Odebere všechny komponenty z tohoto vektoru a nastaví jeho velikost na nulu.
removeElement(Object obj) Odebere první (nejnižší indexovaný) výskyt argumentu z tohoto vektoru.
removeElementAt(int index) Odstraní komponentu na zadaném indexu.
removeIf (filtr predikátu) Odebere všechny prvky této kolekce, které splňují daný predikát.

removeRange(int fromIndex,

int toIndex)

Odebere z tohoto seznamu všechny prvky, jejichž index je mezi fromIndex, včetně, a toIndex, bez.
nahradit vše (operátor UnaryOperator)Nahradí každý prvek tohoto seznamu výsledkem použití operátoru na tento prvek.
zachovat vše (kolekce c) Zachová pouze prvky v tomto vektoru obsažené v zadané kolekci.
set(int index, prvek E) Nahradí prvek na zadané pozici v tomto vektoru zadaným prvkem.
setElementAt(E obj, int index) Nastaví komponentu na zadaném indexu tohoto vektoru jako zadaný objekt.
setSize (int newSize) Nastaví velikost tohoto vektoru.
velikost() Vrátí počet komponent v tomto vektoru.
seřadit (komparátor c) Seřadí tento seznam podle pořadí vyvolaného zadaným komparátorem.
rozdělovač() Vytvoří rozbočovač s pozdní vazbou a rychlým selháním nad prvky v tomto seznamu.
subList(int fromIndex, int toIndex) Vrátí pohled na část tohoto seznamu mezi fromIndex, včetně, a toIndex, bez.
toArray() Vrátí pole obsahující všechny prvky tohoto vektoru ve správném pořadí.
toArray(T[] a) Vrátí pole obsahující všechny prvky tohoto vektoru ve správném pořadí; typ runtime vráceného pole je typ zadaného pole.
toString() Vrátí řetězcovou reprezentaci tohoto Vektoru obsahující řetězcovou reprezentaci každého prvku.
trimToSize() Ořízne kapacitu tohoto vektoru na aktuální velikost vektoru.

Pojďme nejprve diskutovat a implementovat, jak vytvořit a používat Vektor, než přistoupíme k metodám této třídy.

Příklad:

Jáva
// 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); // Přidání nových prvků na // konec vektoru 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ýstup
[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>

Poznámka:

8 na 1 multiplexer
  • Pokud není přírůstek vektoru zadán, jeho kapacita se v každém přírůstkovém cyklu zdvojnásobí.
  • Kapacita vektoru nemůže být pod velikostí, může se jí rovnat.

Provádění různých operací na třídě Vector v Javě

Pojďme diskutovat o různých operacích na třídě Vector, které jsou uvedeny takto:

  1. Přidávání prvků
  2. Aktualizace prvků
  3. Odstraňování prvků
  4. Iterování přes prvky

Operace 1: Přidávání prvků

Abychom přidali prvky do Vektoru, použijeme přidat() metoda. Tato metoda je přetížena prováděním více operací na základě různých parametrů. Jsou uvedeny níže takto:

  • přidat (Objekt): Tato metoda se používá k přidání prvku na konec Vektoru.
  • add(int index, Object): Tato metoda se používá k přidání prvku na konkrétní index ve Vektoru.

Příklad:

Jáva
// 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 (); // Přidání vlastních prvků // pomocí metody add() v2.add(1); v2.add(2); v2.add(3); // Tisk vektorových prvků do konzole System.out.println('Vektor v2 je ' + v2); } }>

Výstup:


Vector v1 is [1, 2, geeks, forGeeks, 3] Vector v2 is [1, 2, 3]>

Operace 2: Aktualizace prvků

Po přidání prvků, pokud chceme prvek změnit, lze to provést pomocí soubor() metoda. Protože je vektor indexován, na prvek, který chceme změnit, odkazuje index prvku. Proto tato metoda vyžaduje vložení indexu a aktualizovaného prvku do tohoto indexu.

Příklad

řetězec nahradit všechny java
Jáva
// 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žijte metodu add() k přidání prvků do vektoru vec_tor.add(12); vec_tor.add(23); vec_tor.add(22); vec_tor.add(10); vec_tor.add(20); // Zobrazení vektoru System.out.println('Vektor: ' + vektor_tor); // Použití metody set() k nahrazení 12 za 21 System.out.println('Objekt, který je nahrazen, je: ' + vec_tor.set(0, 21)); // Použití metody set() k nahrazení 20 za 50 System.out.println('Objekt, který je nahrazen, je: ' + vec_tor.set(4, 50)); // Zobrazení upraveného vektoru System.out.println('Nový vektor je:' + vec_tor); } }>

Výstup
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]>

Operace 3: Odebírání prvků

Abychom odstranili prvek z vektoru, můžeme použít odstranit() metoda. Tato metoda je přetížena prováděním více operací na základě různých parametrů. Oni jsou:

  • odstranit (Objekt): Tato metoda se používá k odstranění objektu z Vektoru. Pokud existuje více takových objektů, pak se první výskyt objektu odstraní.
  • remove(int index): Protože je vektor indexován, tato metoda přebírá celočíselnou hodnotu, která jednoduše odstraní prvek přítomný na tomto konkrétním indexu ve vektoru. Po odstranění prvku se všechny prvky přesunou doleva, aby zaplnily prostor a indexy objektů se aktualizují.

Příklad

img css zarovnat
Jáva
// 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ýstup:

after removal: [1, Geeks, forGeeks, 4]>

Operace 4: Iterace vektoru

Existuje několik způsobů, jak iterovat vektorem. Nejznámějšími způsoby je použití základní smyčky for v kombinaci s a dostat() metoda k získání prvku na konkrétním indexu a pokročilé pro smyčku .

Příklad

Jáva
// 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(); // Přidání prvků pomocí metody add() v.add('Geeks'); v.add('Geekové'); v.add(1, 'Pro'); // Pomocí metody 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ýstup
Geeks For Geeks Geeks For Geeks>

Poznámka: Dejte si přečíst Třída ArrayList vs Vector v Javě abych to lépe uchopil.

V Javě je třída Vector součástí Java Collections Framework a poskytuje implementaci dynamického pole rozhraní List. Byl přidán v původní verzi Java (Java 1.0) a poskytuje řadu metod pro manipulaci s prvky vektoru, včetně přidávání, vkládání a odebírání prvků.

Zde je jednoduchý příklad, který ukazuje, jak používat Vector v Javě:

Jáva
import java.util.Vector; public class VectorExample { public static void main(String[] args) { // Create a new vector Vector v = new Vector(3, 2); // Přidání prvků do vektoru v.addElement(1); v.addElement(2); v.addElement(3); // Vložení prvku na index 1 v.insertElementAt(0, 1); // Odebrání prvku na indexu 2 v.removeElementAt(2); // Vytiskne prvky vektoru for (int i : v) { System.out.println(i); } } }>

Výstup
1 0 3>

Všimněte si, že třída Vector je synchronizovaná, což znamená, že více vláken může přistupovat ke stejnému vektoru, aniž by to způsobovalo problémy. Tato synchronizace je však na úkor výkonu, takže pokud nepotřebujete sdílet vektor mezi více vlákny, je obecně lepší použít alternativní třídu, jako je ArrayList, která není synchronizována.

Výhody použití Vector v Javě:

  1. Synchronizace: Jak již bylo zmíněno, Vector je synchronizován, takže jej lze bezpečně používat ve vícevláknovém prostředí.
  2. Dynamická velikost: Velikost vektoru se může dynamicky zvětšovat nebo zmenšovat, jak jsou prvky přidávány nebo odebírány, takže se nemusíte starat o nastavení počáteční velikosti, která pojme všechny prvky.
  3. Podpora starších verzí: Vector je součástí Javy od jejího počátku a je stále podporován, takže je to dobrá volba, pokud potřebujete pracovat se starším kódem Java, který používá Vector.

Nevýhody použití Vector v Javě:

  1. Výkon: Synchronizace ve Vector může vést k nižšímu výkonu ve srovnání s jinými třídami kolekce, jako je ArrayList.
  2. Legacy Code: Zatímco Vector je stále podporován, novější kód Java je často psán pomocí modernějších tříd kolekce, takže může být obtížnější najít příklady a podporu pro Vector.
  3. Zbytečná režie: Pokud nepotřebujete synchronizační funkce programu Vector, jeho použití přidá vašemu kódu zbytečnou režii.

Příručka

Dobrou referenční knihou pro seznámení se s Java Collections Framework a Vector je Java Collections od Naftalin a Wadler. Tato kniha poskytuje komplexní pohled na rámec kolekcí Java, včetně Vector, a obsahuje mnoho příkladů a cvičení, která vám pomohou pochopit, jak tyto třídy efektivně používat.