Vektorklasse i Java
Vector-klassen implementerer en rekke objekter som kan vokse. Vektorer faller i eldre klasser, men nå er det fullt kompatibelt med samlinger. Den finnes i java.util-pakken og implementere Liste grensesnitt, slik at vi kan bruke alle metodene til List-grensesnittet som vist nedenfor som følger:
- Vector implementerer en dynamisk matrise som betyr at den kan vokse eller krympe etter behov. Som en matrise inneholder den komponenter som kan nås ved hjelp av en heltallsindeks.
- De er veldig like ArrayList , men Vector er synkronisert og har noen eldre metoder som samlingsrammeverket ikke inneholder.
- Den opprettholder også en innsettingsrekkefølge som en ArrayList. Likevel brukes den sjelden i et miljø uten tråd som den er synkronisert , og på grunn av dette gir den dårlig ytelse når det gjelder å legge til, søke, slette og oppdatere elementene.
- Iteratorene som returneres av Vector-klassen, feiler raskt. I tilfelle av samtidig modifikasjon, svikter den og kaster ConcurrentModificationException.
Syntaks:
public class Vector extends AbstractList implements List, RandomAccess, Cloneable, Serializable
Her, OG er typen element.
- Den strekker seg Abstrakt liste og redskaper Liste grensesnitt.
- Den implementerer Serializable, Cloneable, Iterable, Collection, List, RandomAccess-grensesnitt.
- Den direkte kjente underklassen er Stable .
Viktige punkter angående økningen av vektorkapasitet er som følger:
Hvis inkrementet er spesifisert, vil Vector utvides i henhold til det i hver tildelingssyklus. Likevel, hvis inkrementet ikke er spesifisert, blir vektorens kapasitet doblet i hver tildelingssyklus. Vector definerer tre beskyttede datamedlemmer:
- int kapasitetInkrement: Inneholder økningsverdien.
- int elementCount: Antall elementer som for øyeblikket er lagret i vektoren.
- ObjektelementData[]: Array som holder vektoren er lagret i den.
Vanlige feil i erklæringen av vektorer er som følger :
- Vektor kaster en UlovligArgumentUnntak hvis InitialSize for den definerte vektoren er negativ.
- Hvis den angitte samlingen er null, kaster den NullPointerException .
Konstruktører
1. Vektor(): Oppretter en standardvektor med den opprinnelige kapasiteten er 10.
Vector v = new Vector();
2. Vektor (int størrelse): Oppretter en vektor hvis startkapasitet er spesifisert etter størrelse.
Vector v = new Vector(int size);
3. Vektor (int størrelse, int incr): Oppretter en vektor hvis opprinnelige kapasitet er spesifisert av størrelse og inkrement er spesifisert av incr. Den spesifiserer antall elementer som skal tildeles hver gang en vektor endres oppover.
Vector v = new Vector(int size, int incr);
4. Vektor (Samling c): Oppretter en vektor som inneholder elementene i samling c.
Vector v = new Vector(Collection c);
Metoder i vektorklassen
| METODE | BESKRIVELSE |
|---|---|
| legg til (Og og) | Legger til det spesifiserte elementet til slutten av denne vektoren. |
| add(int indeks, E-element) | Setter inn det spesifiserte elementet på den angitte posisjonen i denne vektoren. |
| addAll(Samling utvider E> c) | Legger til alle elementene i den angitte samlingen til slutten av denne vektoren, i den rekkefølgen de returneres av den angitte samlingens iterator. |
| addAll(int index, Samling c) | Sett inn alle elementene i den angitte samlingen i denne vektoren på den angitte posisjonen. |
| addElement(E obj) | Legger til den angitte komponenten på slutten av denne vektoren, og øker størrelsen med én. |
| kapasitet() | Returnerer gjeldende kapasitet til denne vektoren. |
| klar() | Fjerner alle elementene fra denne vektoren. |
| klone() | Returnerer en klon av denne vektoren. |
| inneholder(Objekt o) | Returnerer sann hvis denne vektoren inneholder det angitte elementet. |
| inneholder Alle (Samling c) | Returnerer sann hvis denne vektoren inneholder alle elementene i den angitte samlingen. |
| copyInto ( Objekt [ ] anArray ) | Kopierer komponentene til denne vektoren inn i den angitte matrisen. |
| elementAt(int indeks) | Returnerer komponenten ved den angitte indeksen. |
| elementer() | Returnerer en oppregning av komponentene i denne vektoren. |
| sikreCapacity(int minCapacity) | Øker kapasiteten til denne vektoren, om nødvendig, for å sikre at den kan inneholde minst antallet komponenter spesifisert av minimumskapasitetsargumentet. |
| lik(Objekt o) | Sammenligner det spesifiserte objektet med denne vektoren for likhet. |
| firstElement() | Returnerer den første komponenten (elementet ved indeks 0) av denne vektoren. |
| forHver(Forbruker super E> handling) | Utfører den gitte handlingen for hvert element i Iterable til alle elementene er behandlet eller handlingen gir et unntak. |
| get (int indeks) | Returnerer elementet på den angitte posisjonen i denne vektoren. |
| hashkode() | Returnerer hash-kodeverdien for denne vektoren. |
| indexOf(Objekt o) | Returnerer indeksen for den første forekomsten av det spesifiserte elementet i denne vektoren, eller -1 hvis denne vektoren ikke inneholder elementet. |
| indexOf(Objekt o, int indeks) | Returnerer indeksen for den første forekomsten av det spesifiserte elementet i denne vektoren, søker fremover fra indeksen, eller returnerer -1 hvis elementet ikke blir funnet. |
| insertElementAt(E obj, int index) | Setter inn det angitte objektet som en komponent i denne vektoren ved den angitte indeksen. |
| er tom() | Tester om denne vektoren ikke har noen komponenter. |
| iterator() | Returnerer en iterator over elementene i denne listen i riktig rekkefølge. |
| lastElement() | Returnerer den siste komponenten i vektoren. |
| lastIndexOf(Objekt o) | Returnerer indeksen for siste forekomst av det spesifiserte elementet i denne vektoren, eller -1 hvis denne vektoren ikke inneholder elementet. |
| lastIndexOf(Objekt o, int indeks) | Returnerer indeksen for siste forekomst av det angitte elementet i denne vektoren, søker bakover fra indeksen, eller returnerer -1 hvis elementet ikke blir funnet. |
| listIterator() | Returnerer en listeiterator over elementene i denne listen (i riktig rekkefølge). |
| listIterator(int index) | Returnerer en listeiterator over elementene i denne listen (i riktig rekkefølge), starter på den angitte posisjonen i listen. |
| remove(int index) | Fjerner elementet på den angitte posisjonen i denne vektoren. |
| fjern (Objekt o) | Fjerner den første forekomsten av det spesifiserte elementet i denne vektoren. Hvis vektoren ikke inneholder elementet, er det uendret. |
| removeAll(Samling c) | Fjerner fra denne vektoren alle dens elementer i den angitte samlingen. |
| removeAllElements() | Fjerner alle komponenter fra denne vektoren og setter størrelsen til null. |
| removeElement(Object obj) | Fjerner den første (laveste indekserte) forekomsten av argumentet fra denne vektoren. |
| removeElementAt(int index) | Sletter komponenten ved den angitte indeksen. |
| removeIf(Predikatfilter) | Fjerner alle elementene i denne samlingen som tilfredsstiller det gitte predikatet. |
| removeRange(int fromIndex, int toIndex) | Fjerner fra denne listen alle elementene hvis indeks er mellom fromIndex, inklusive, og toIndex, exclusive. |
| replaceAll(UnaryOperator-operatør) | Erstatter hvert element i denne listen med resultatet av å bruke operatoren på det elementet. |
| retainAll(Samling c) | Beholder kun elementene i denne vektoren som finnes i den angitte samlingen. |
| sett (int-indeks, E-element) | Erstatter elementet på den angitte posisjonen i denne vektoren med det spesifiserte elementet. |
| setElementAt(E obj, int index) | Setter komponenten ved den angitte indeksen til denne vektoren til å være det spesifiserte objektet. |
| setSize(int newSize) | Angir størrelsen på denne vektoren. |
| størrelse() | Returnerer antall komponenter i denne vektoren. |
| sorter (sammenligning c) | Sorterer denne listen i henhold til rekkefølgen indusert av den spesifiserte komparatoren. |
| splitter() | Oppretter en sen-bindende og feil-rask Spliterator over elementene i denne listen. |
| subList(int fromIndex, int toIndex) | Returnerer en visning av delen av denne listen mellom fromIndex, inklusive, og toIndex, exclusive. |
| toArray() | Returnerer en matrise som inneholder alle elementene i denne vektoren i riktig rekkefølge. |
| toArray(T[] a) | Returnerer en matrise som inneholder alle elementene i denne vektoren i riktig rekkefølge; kjøretidstypen for den returnerte matrisen er den for den angitte matrisen. |
| toString() | Returnerer en strengrepresentasjon av denne vektoren, som inneholder strengrepresentasjonen av hvert element. |
| trimToSize() | Trimmer kapasiteten til denne vektoren til å være vektorens nåværende størrelse. |
La oss først diskutere og implementere hvordan man lager og bruker en vektor før vi lander på metodene i denne klassen.
Eksempel:
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 = ny vektor (n); // Legge til nye elementer ved // slutten av vektoren 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) + ' '); } } Produksjon
[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5
Merk:
- Hvis vektortilveksten ikke er spesifisert, vil dens kapasitet bli doblet i hver inkrementsyklus.
- Kapasiteten til en vektor kan ikke være under størrelsen, den kan være lik den.
Utføre forskjellige operasjoner på Vector-klassen i Java
La oss diskutere ulike operasjoner på Vector-klassen som er oppført som følger:
- Legge til elementer
- Oppdatering av elementer
- Fjerning av elementer
- Iterering over elementer
Operasjon 1: Legge til elementer
For å legge til elementene i vektoren bruker vi Legg til() metode. Denne metoden er overbelastet for å utføre flere operasjoner basert på forskjellige parametere. De er listet opp nedenfor som følger:
- add(Objekt): Denne metoden brukes til å legge til et element på slutten av vektoren.
- add(int index, Object): Denne metoden brukes til å legge til et element ved en bestemt indeks i vektoren.
Eksempel:
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 = ny vektor (); // Legge til egendefinerte elementer // ved hjelp av add()-metoden v2.add(1); v2.add(2); v2.add(3); // Skrive ut vektorelementene til konsollen System.out.println('Vektor v2 er ' + v2); } } Produksjon:
Vector v1 is [1, 2, geeks, forGeeks, 3] Vector v2 is [1, 2, 3]
Operasjon 2: Oppdatering av elementer
Etter å ha lagt til elementene, hvis vi ønsker å endre elementet, kan det gjøres ved å bruke sett() metode. Siden en vektor er indeksert, blir elementet som vi ønsker å endre referert til av elementets indeks. Derfor tar denne metoden en indeks og det oppdaterte elementet som skal settes inn i den indeksen.
Eksempel
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 = ny vektor (); // Bruk add()-metoden for å legge til elementer i vektoren vec_tor.add(12); vec_tor.add(23); vec_tor.add(22); vec_tor.add(10); vec_tor.add(20); // Viser Vector System.out.println('Vector: ' + vec_tor); // Bruk av set()-metoden for å erstatte 12 med 21 System.out.println('Objektet som erstattes er: ' + vec_tor.set(0, 21)); // Bruk av set()-metoden for å erstatte 20 med 50 System.out.println('Objektet som erstattes er: ' + vec_tor.set(4, 50)); // Viser den modifiserte vektoren System.out.println('Den nye vektoren er:' + vec_tor); } } Produksjon
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]
Operasjon 3: Fjerning av elementer
For å fjerne et element fra en vektor, kan vi bruke fjerne() metode. Denne metoden er overbelastet for å utføre flere operasjoner basert på forskjellige parametere. De er:
- fjern (objekt): Denne metoden brukes til å fjerne et objekt fra vektoren. Hvis det er flere slike objekter, fjernes den første forekomsten av objektet.
- remove(int index): Siden en vektor er indeksert, tar denne metoden en heltallsverdi som ganske enkelt fjerner elementet som er tilstede på den spesifikke indeksen i vektoren. Etter å ha fjernet elementet, flyttes alle elementene til venstre for å fylle plassen og indeksene til objektene oppdateres.
Eksempel
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); } } Produksjon:
after removal: [1, Geeks, forGeeks, 4]
Operasjon 4: Iterering av vektoren
Det er flere måter å iterere gjennom vektoren. De mest kjente måtene er å bruke basic for loop i kombinasjon med en få() metode for å få elementet på en bestemt indeks og avansert for en loop .
Eksempel
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 Vector v = ny vektor(); // Legg til elementer ved hjelp av add() metoden v.add('Geeks'); v.add('Geeks'); v.add(1, 'For'); // Ved å bruke Get-metoden og // for loop 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 + ' '); } } Produksjon
Geeks For Geeks Geeks For Geeks
Merk: Gi en les til ArrayList vs Vector-klassen i Java å forstå det bedre.
I Java er Vector-klassen en del av Java Collections Framework og gir en dynamisk array-implementering av List-grensesnittet. Den ble lagt til i den opprinnelige versjonen av Java (Java 1.0) og gir en rekke metoder for å manipulere elementene i en vektor, inkludert å legge til, sette inn og fjerne elementer.
Her er et enkelt eksempel som viser hvordan du bruker en vektor i Java:
Java import java.util.Vector; public class VectorExample { public static void main(String[] args) { // Create a new vector Vector v = ny vektor(3, 2); // Legg til elementer i vektoren v.addElement(1); v.addElement(2); v.addElement(3); // Sett inn et element ved indeks 1 v.insertElementAt(0, 1); // Fjern elementet ved indeks 2 v.removeElementAt(2); // Skriv ut elementene i vektoren for (int i : v) { System.out.println(i); } } } Produksjon
1 0 3
Merk at Vector-klassen er synkronisert, noe som betyr at flere tråder kan få tilgang til samme vektor uten å forårsake problemer. Imidlertid kommer denne synkroniseringen på bekostning av ytelsen, så hvis du ikke trenger å dele en vektor mellom flere tråder, er det generelt bedre å bruke en alternativ klasse som ArrayList som ikke er synkronisert.
Fordeler med å bruke Vector i Java:
- Synkronisering: Som nevnt før er Vector synkronisert, noe som gjør det trygt å bruke i et flertrådsmiljø.
- Dynamisk størrelse: Størrelsen på en vektor kan vokse eller krympe dynamisk etter hvert som elementer legges til eller fjernes, så du trenger ikke å bekymre deg for å angi en startstørrelse som vil romme alle elementer.
- Eldre støtte: Vector har vært en del av Java siden starten og støttes fortsatt, så det er et godt alternativ hvis du trenger å jobbe med eldre Java-kode som bruker Vector.
Ulemper med å bruke Vector i Java:
- Ytelse: Synkroniseringen i Vector kan føre til tregere ytelse sammenlignet med andre samlingsklasser, for eksempel ArrayList.
- Legacy Code: Mens Vector fortsatt støttes, er nyere Java-kode ofte skrevet med de mer moderne samlingsklassene, så det kan være vanskeligere å finne eksempler og støtte for Vector.
- Unødvendig overhead: Hvis du ikke trenger synkroniseringsfunksjonene til Vector, vil bruk av det legge til unødvendig overhead til koden din.
Oppslagsverk
En god oppslagsbok for å lære om Java Collections Framework and Vector er Java Collections av Naftalin og Wadler. Denne boken gir en omfattende titt på Java-samlingsrammeverket, inkludert Vector, og inneholder mange eksempler og øvelser for å hjelpe deg å forstå hvordan du bruker disse klassene effektivt.