logo

Vectorklasse in Java

De Vector-klasse implementeert een groeiende reeks objecten. Vectoren vallen in oudere klassen, maar zijn nu volledig compatibel met collecties. Het wordt gevonden in java.util-pakket en implementeren van Lijst interface, zodat we alle methoden van de Lijst-interface kunnen gebruiken, zoals hieronder weergegeven, als volgt:

Vectorklasse in Java

  • Vector implementeert een dynamische array, wat betekent dat deze naar behoefte kan groeien of krimpen. Net als een array bevat het componenten die toegankelijk zijn via een geheeltallige index.
  • Ze lijken erg op ArrayLijst , maar Vector is gesynchroniseerd en heeft een aantal oudere methoden die het verzamelframework niet bevat.
  • Het onderhoudt ook een invoegvolgorde zoals een ArrayList. Toch wordt het zelden gebruikt in een niet-threadomgeving zoals het is gesynchroniseerd , en hierdoor levert het slechte prestaties bij het toevoegen, zoeken, verwijderen en bijwerken van de elementen ervan.
  • De Iterators die door de Vector-klasse worden geretourneerd, zijn feilloos. In het geval van gelijktijdige wijziging mislukt het en wordt de ConcurrentModificationException.

Syntaxis:



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

Hier, EN is het type element.

  • Het strekt zich uit SamenvattingLijst en implementeert Lijst interfaces.
  • Het implementeert Serializable, Cloneable, Iterable, Collection, List, RandomAccess-interfaces.
  • De direct bekende subklasse is Stapel .

Belangrijke punten met betrekking tot de toename van de vectorcapaciteit zijn als volgt:

Als de stapgrootte is opgegeven, wordt Vector in elke toewijzingscyclus dienovereenkomstig uitgebreid. Maar als de toename niet is gespecificeerd, wordt de capaciteit van de vector in elke toewijzingscyclus verdubbeld. Vector definieert drie beschermde gegevensleden:

  • int capaciteitIncrement: Bevat de ophoogwaarde.
  • int elementCount: Aantal elementen dat momenteel in vector is opgeslagen.
  • ObjectelementData[]: De array die de vector bevat, wordt erin opgeslagen.

Veel voorkomende fouten bij het declareren van vectoren zijn als volgt :

  • Vector gooit een Illegale ArgumentException als de InitialSize van de gedefinieerde vector negatief is.
  • Als de opgegeven verzameling nul is, wordt er gegooid NullPointerException .

Constructeurs

1. Vector(): Creëert een standaardvector van de initiële capaciteit van 10.

Vector v = new Vector();>

2. Vector (int-grootte): Creëert een vector waarvan de initiële capaciteit wordt gespecificeerd op basis van de grootte.

Vector v = new Vector(int size);>

3. Vector(int-grootte, int incr): Creëert een vector waarvan de initiële capaciteit wordt gespecificeerd door grootte en de toename wordt gespecificeerd door incr. Het specificeert het aantal elementen dat moet worden toegewezen telkens wanneer de grootte van een vector naar boven wordt gewijzigd.

Indiase actrice Rani Mukerji
Vector v = new Vector(int size, int incr);>

4. Vector (verzameling c): Creëert een vector die de elementen van verzameling c bevat.

Vector v = new Vector(Collection c);>

Methoden in vectorklasse

METHODE

BESCHRIJVING

bedrijf versus bedrijf
toevoegen(En en) Voegt het opgegeven element toe aan het einde van deze vector.
add(int index, E-element) Voegt het opgegeven element in op de opgegeven positie in deze vector.

addAll(verzameling

verlengt E> c)

Voegt alle elementen in de opgegeven verzameling toe aan het einde van deze vector, in de volgorde waarin ze worden geretourneerd door de Iterator van de opgegeven verzameling.

addAll(int-index,

Collectie c)

Voeg alle elementen uit de opgegeven verzameling in deze vector in op de opgegeven positie.
addElement(E obj) Voegt de opgegeven component toe aan het einde van deze vector, waardoor de grootte met één wordt vergroot.
capaciteit() Retourneert de huidige capaciteit van deze vector.
duidelijk() Verwijdert alle elementen uit deze vector.
kloon() Retourneert een kloon van deze vector.
bevat(Object o) Retourneert waar als deze vector het opgegeven element bevat.
bevatAlles(Verzameling c) Retourneert waar als deze vector alle elementen in de opgegeven verzameling bevat.
copyInto (Object [ ] anArray ) Kopieert de componenten van deze vector naar de opgegeven array.
elementAt(int-index) Retourneert de component op de opgegeven index.
elementen() Retourneert een opsomming van de componenten van deze vector.
garanderenCapaciteit(int minCapaciteit) Verhoogt indien nodig de capaciteit van deze vector om ervoor te zorgen dat deze ten minste het aantal componenten kan bevatten dat is opgegeven door het argument voor minimale capaciteit.
is gelijk aan(Object o) Vergelijkt het opgegeven object met deze vector voor gelijkheid.
eersteElement() Retourneert de eerste component (het item op index 0) van deze vector.

voorElke(Consument

super E> actie)

Voert de gegeven actie uit voor elk element van de iterabele totdat alle elementen zijn verwerkt of de actie een uitzondering genereert.
get(int-index) Retourneert het element op de opgegeven positie in deze vector.
hashCode() Retourneert de hashcodewaarde voor deze vector.
indexOf(Object o)

Retourneert de index van de eerste keer dat het opgegeven element in deze vector voorkomt,

of -1 als deze vector het element niet bevat.

indexOf(Object o, int-index) Retourneert de index van de eerste keer dat het opgegeven element in deze vector voorkomt, waarbij vooruit wordt gezocht vanuit de index, of retourneert -1 als het element niet wordt gevonden.
insertElementAt(E obj, int-index) Voegt het opgegeven object in als component in deze vector op de opgegeven index.
is leeg() Test of deze vector geen componenten heeft.
iterator() Retourneert een iterator over de elementen in deze lijst in de juiste volgorde.
laatsteElement() Retourneert de laatste component van de vector.
laatsteIndexOf(Object o)

Retourneert de index van de laatste keer dat het opgegeven element in deze vector voorkomt,

of -1 als deze vector het element niet bevat.

lastIndexOf(Object o, int-index) Retourneert de index van de laatste keer dat het opgegeven element in deze vector voorkomt, waarbij achteruit wordt gezocht vanuit de index, of retourneert -1 als het element niet is gevonden.
lijstIterator() Retourneert een lijstiterator over de elementen in deze lijst (in de juiste volgorde).
listIterator(int-index)

Geeft een lijstiterator terug over de elementen in deze lijst (in de juiste volgorde),

beginnend op de opgegeven positie in de lijst.

invoegpython
verwijder(int index) Verwijdert het element op de opgegeven positie in deze vector.
verwijder(Object o) Verwijdert de eerste keer dat het opgegeven element in deze vector voorkomt. Als de vector het element niet bevat, blijft het ongewijzigd.
removeAll(Verzameling c) Verwijdert uit deze vector alle elementen die zich in de opgegeven verzameling bevinden.
verwijderAlleElementen() Verwijdert alle componenten van deze vector en stelt de grootte in op nul.
removeElement(Objectobj) Verwijdert het eerste (laagst geïndexeerde) exemplaar van het argument uit deze vector.
removeElementAt(int-index) Verwijdert de component op de opgegeven index.
removeIf(Predikaatfilter) Verwijdert alle elementen van deze verzameling die aan het gegeven predikaat voldoen.

removeRange(int uitIndex,

int naarIndex)

Verwijdert uit deze lijst alle elementen waarvan de index zich tussen fromIndex, inclusief, en toIndex, exclusief bevindt.
ReplaceAll(UnaryOperator-operator)Vervangt elk element van deze lijst door het resultaat van het toepassen van de operator op dat element.
behoudenAlles(Verzameling c) Behoudt alleen de elementen in deze vector in de opgegeven verzameling.
set(int index, E-element) Vervangt het element op de opgegeven positie in deze vector door het opgegeven element.
setElementAt(E obj, int-index) Stelt de component in op de opgegeven index van deze vector als het opgegeven object.
setSize(int nieuweSize) Stelt de grootte van deze vector in.
maat() Retourneert het aantal componenten in deze vector.
sorteer(vergelijker c) Sorteert deze lijst volgens de volgorde die wordt bepaald door de opgegeven vergelijker.
splitter() Creëert een laatbindende en feilloze spliterator over de elementen in deze lijst.
subLijst(int vanIndex, int naarIndex) Retourneert een weergave van het gedeelte van deze lijst tussen fromIndex, inclusief, en toIndex, exclusief.
toArray() Retourneert een array die alle elementen in deze vector in de juiste volgorde bevat.
toArray(T[] a) Geeft een array terug die alle elementen in deze vector in de juiste volgorde bevat; het runtimetype van de geretourneerde array is dat van de opgegeven array.
toString() Retourneert een tekenreeksrepresentatie van deze vector, die de tekenreeksrepresentatie van elk element bevat.
trimToSize() Trimt de capaciteit van deze vector zodat deze de huidige grootte van de vector heeft.

Laten we eerst bespreken en implementeren hoe we een vector kunnen maken en gebruiken voordat we op de methoden van deze klasse terechtkomen.

Voorbeeld:

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 = nieuwe vector (N); // Nieuwe elementen toevoegen aan // het einde van de vector voor (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) + ' '); } }>

Uitvoer
[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>

Opmerking:

  • Als de vectorverhoging niet is gespecificeerd, wordt de capaciteit ervan bij elke verhogingscyclus verdubbeld.
  • De capaciteit van een vector kan niet kleiner zijn dan de grootte, maar kan er gelijk aan zijn.

Verschillende bewerkingen uitvoeren op de Vector-klasse in Java

Laten we verschillende bewerkingen op de Vector-klasse bespreken die als volgt worden weergegeven:

  1. Elementen toevoegen
  2. Elementen bijwerken
  3. Elementen verwijderen
  4. Itereren over elementen

Operatie 1: Elementen toevoegen

Om de elementen aan de vector toe te voegen, gebruiken we de toevoegen() methode. Deze methode is overbelast om meerdere bewerkingen uit te voeren op basis van verschillende parameters. Ze worden hieronder als volgt opgesomd:

  • toevoegen(Object): Deze methode wordt gebruikt om een ​​element aan het einde van de vector toe te voegen.
  • add(int-index, Object): Deze methode wordt gebruikt om een ​​element toe te voegen aan een specifieke index in de vector.

Voorbeeld:

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 = nieuwe vector (); // Aangepaste elementen toevoegen // met add() methode v2.add(1); v2.toevoegen(2); v2.toevoegen(3); // De vectorelementen afdrukken naar de console System.out.println('Vector v2 is ' + v2); } }>

Uitgang:

periode sleutel


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

Operatie 2: Elementen bijwerken

Als we na het toevoegen van de elementen het element willen wijzigen, kan dit worden gedaan met behulp van de set() methode. Omdat een vector is geïndexeerd, wordt naar het element dat we willen wijzigen verwezen door de index van het element. Daarom neemt deze methode een index en het bijgewerkte element dat in die index moet worden ingevoegd.

Voorbeeld

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 = nieuwe vector (); // Gebruik de methode add() om elementen toe te voegen aan de vector vec_tor.add(12); vec_tor.add(23); vec_tor.add(22); vec_tor.add(10); vec_tor.add(20); // De vector System.out.println weergeven ('Vector: ' + vec_tor); // Gebruik de set()-methode om 12 te vervangen door 21 System.out.println('Het object dat wordt vervangen is: ' + vec_tor.set(0, 21)); // Gebruik de set()-methode om 20 te vervangen door 50 System.out.println('Het object dat wordt vervangen is: ' + vec_tor.set(4, 50)); // De gewijzigde vector System.out.println weergeven ('De nieuwe vector is:' + vec_tor); } }>

Uitvoer
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]>

Operatie 3: Elementen verwijderen

Om een ​​element uit een vector te verwijderen, kunnen we de verwijderen() methode. Deze methode is overbelast om meerdere bewerkingen uit te voeren op basis van verschillende parameters. Zij zijn:

  • verwijder(Object): Deze methode wordt gebruikt om een ​​object uit de vector te verwijderen. Als er meerdere van dergelijke objecten zijn, wordt het eerste exemplaar van het object verwijderd.
  • verwijder(int index): Omdat een vector wordt geïndexeerd, neemt deze methode een geheel getal, waardoor eenvoudigweg het element wordt verwijderd dat aanwezig is in die specifieke index in de vector. Na het verwijderen van het element worden alle elementen naar links verplaatst om de ruimte te vullen en worden de indexen van de objecten bijgewerkt.

Voorbeeld

priemgetal Java
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); } }>

Uitgang:

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

Operatie 4: Iteratie van de vector

Er zijn meerdere manieren om de vector te doorlopen. De bekendste manieren zijn door de basis for-lus te gebruiken in combinatie met a krijgen() methode om het element op een specifieke index te krijgen en de ging vooruit voor een lus .

Voorbeeld

Java
// 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 = nieuwe Vector(); // Voeg elementen toe met de add() methode v.add('Geeks'); v.add('Geeks'); v.add(1, 'Voor'); // Met behulp van de Get-methode en de // for-lus 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 + ' '); } }>

Uitvoer
Geeks For Geeks Geeks For Geeks>

Opmerking: Lees het eens door ArrayList versus Vector-klasse in Java om het beter te begrijpen.

In Java maakt de klasse Vector deel uit van het Java Collections Framework en biedt een dynamische array-implementatie van de List-interface. Het is toegevoegd in de oorspronkelijke versie van Java (Java 1.0) en biedt een aantal methoden voor het manipuleren van de elementen van een vector, inclusief het toevoegen, invoegen en verwijderen van elementen.

Hier is een eenvoudig voorbeeld dat laat zien hoe u een vector in Java gebruikt:

Java
import java.util.Vector; public class VectorExample { public static void main(String[] args) { // Create a new vector Vector v = nieuwe Vector(3, 2); // Voeg elementen toe aan de vector v.addElement(1); v.addElement(2); v.addElement(3); // Voeg een element in op index 1 v.insertElementAt(0, 1); // Verwijder het element op index 2 v.removeElementAt(2); // Druk de elementen van de vector af voor (int i: v) { System.out.println(i); } } }>

Uitvoer
1 0 3>

Merk op dat de klasse Vector gesynchroniseerd is, wat betekent dat meerdere threads toegang hebben tot dezelfde vector zonder problemen te veroorzaken. Deze synchronisatie gaat echter ten koste van de prestaties, dus als u een vector niet tussen meerdere threads hoeft te delen, is het over het algemeen beter om een ​​alternatieve klasse zoals ArrayList te gebruiken, die niet is gesynchroniseerd.

Voordelen van het gebruik van Vector in Java:

  1. Synchronisatie: Zoals eerder vermeld, is Vector gesynchroniseerd, waardoor het veilig is om te gebruiken in een omgeving met meerdere threads.
  2. Dynamische grootte: De grootte van een vector kan dynamisch groter of kleiner worden naarmate elementen worden toegevoegd of verwijderd, zodat u zich geen zorgen hoeft te maken over het instellen van een initiële grootte die geschikt is voor alle elementen.
  3. Oudere ondersteuning: Vector is vanaf het begin onderdeel van Java en wordt nog steeds ondersteund, dus het is een goede optie als u met oudere Java-code moet werken die Vector gebruikt.

Nadelen van het gebruik van Vector in Java:

  1. Prestaties: De synchronisatie in Vector kan leiden tot langzamere prestaties in vergelijking met andere verzamelklassen, zoals ArrayList.
  2. Oudere code: hoewel Vector nog steeds wordt ondersteund, wordt nieuwere Java-code vaak geschreven met behulp van de modernere verzamelklassen, waardoor het moeilijker kan zijn om voorbeelden en ondersteuning voor Vector te vinden.
  3. Onnodige overhead: als u de synchronisatiefuncties van Vector niet nodig heeft, zal het gebruik ervan onnodige overhead aan uw code toevoegen.

Referentieboek

Een goed naslagwerk om meer te leren over het Java Collections Framework en Vector is Java Collections van Naftalin en Wadler. Dit boek biedt een uitgebreid overzicht van het Java-collectieframework, inclusief Vector, en bevat veel voorbeelden en oefeningen om u te helpen begrijpen hoe u deze klassen effectief kunt gebruiken.