logo

Vektorinė klasė Java

„Vector“ klasė įgyvendina platų objektų masyvą. Vektoriai patenka į senąsias klases, tačiau dabar jie visiškai suderinami su kolekcijomis. Jis randamas java.util paketą ir įgyvendinti Sąrašas sąsaja, todėl galime naudoti visus sąrašo sąsajos metodus, kaip parodyta toliau taip:

Vektorinė klasė Java



  • Vektorius įgyvendina dinaminį masyvą, o tai reiškia, kad jis gali augti arba trauktis pagal poreikį. Kaip ir masyve, jame yra komponentų, kuriuos galima pasiekti naudojant sveikųjų skaičių indeksą.
  • Jie labai panašūs į ArrayList , tačiau „Vector“ yra sinchronizuotas ir turi keletą senų metodų, kurių rinkimo sistemoje nėra.
  • Ji taip pat palaiko įterpimo tvarką, pavyzdžiui, ArrayList. Vis dėlto jis retai naudojamas ne gijų aplinkoje, kokia yra sinchronizuoti , ir dėl to jis prastai veikia pridedant, ieškant, ištrinant ir atnaujinant elementus.
  • „Vector“ klasės grąžinti iteratoriai yra greiti. Tuo pačiu metu modifikavimo atveju jis sugenda ir išmeta ConcurrentModificationException.

Sintaksė:

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

Čia IR yra elemento tipas.

  • Jis tęsiasi Abstractsąrašas ir padargai Sąrašas sąsajos.
  • Jis įgyvendina serializuojamo, klonuojamo, kartojamo, rinkinio, sąrašo, atsitiktinės prieigos sąsajas.
  • Tiesiogiai žinomas poklasis yra Stack .

Svarbūs dalykai, susiję su vektoriaus talpos padidėjimu, yra šie:



Jei prieaugis nurodytas, vektorius pagal jį išsiplės kiekviename paskirstymo cikle. Vis dėlto, jei prieaugis nenurodytas, vektoriaus talpa padvigubėja kiekviename paskirstymo cikle. Vektorius apibrėžia tris apsaugotus duomenų narius:

  • vidinės talpos prieaugis: Yra prieaugio vertė.
  • int elementCount: Šiuo metu jame saugomų vektoriaus elementų skaičius.
  • Objekto elementasDuomenys[]: Jame saugomas masyvas, kuriame yra vektorius.

Dažnos vektorių deklaracijos klaidos yra tokios seka :

  • Vektorius meta an IllegalArgumentException jei apibrėžto vektoriaus Pradinis dydis yra neigiamas.
  • Jei nurodyta kolekcija yra nulinė, ji meta NullPointerException .

Konstruktoriai

1. Vektorius (): Sukuria numatytąjį vektorių, kurio pradinė talpa yra 10.



Vector v = new Vector();>

2. Vektorius (vidinis dydis): Sukuria vektorių, kurio pradinė talpa nurodyta pagal dydį.

Vector v = new Vector(int size);>

3. Vektorius (int dydis, int incr): Sukuria vektorių, kurio pradinė talpa nurodoma pagal dydį, o prieaugis nurodomas incr. Jis nurodo elementų skaičių, kurį reikia paskirstyti kiekvieną kartą, kai vektoriaus dydis pakeičiamas į viršų.

Java kūrimo sąrašas
Vector v = new Vector(int size, int incr);>

4. Vektorius (c rinkinys): Sukuria vektorių, kuriame yra rinkinio c elementai.

Vector v = new Vector(Collection c);>

Metodai vektorinėje klasėje

METODAS

APIBŪDINIMAS

awt java
pridėti (ir ir) Prideda nurodytą elementą šio vektoriaus pabaigoje.
pridėti (indeksas, E elementas) Įterpia nurodytą elementą nurodytoje šio vektoriaus vietoje.

addAll(Kolekcija

tęsiasi E> c)

Prie šio vektoriaus pabaigos prideda visus nurodytos kolekcijos elementus tokia tvarka, kokia juos grąžina nurodytos kolekcijos iteratorius.

addAll(int indeksas,

Kolekcija c)

Įterpkite visus nurodytos kolekcijos elementus į šį vektorių nurodytoje vietoje.
addElement(E obj) Prideda nurodytą komponentą prie šio vektoriaus pabaigos, padidindamas jo dydį vienu.
talpa () Grąžina esamą šio vektoriaus talpą.
aišku () Pašalina visus elementus iš šio vektoriaus.
klonas () Grąžina šio vektoriaus kloną.
yra (O objektas) Grąžina true, jei šiame vektoriuje yra nurodytas elementas.
yra viskas (rinkinys c) Grąžina „true“, jei šiame vektoriuje yra visi nurodytos kolekcijos elementai.
copyInto ( objektas [ ] anArray ) Nukopijuoja šio vektoriaus komponentus į nurodytą masyvą.
elementAt(int index) Grąžina nurodyto indekso komponentą.
elementai () Pateikia šio vektoriaus komponentų sąrašą.
užtikrintiCapacity(int minCapacity) Jei reikia, padidina šio vektoriaus talpą, kad užtikrintų, jog jame gali būti bent tiek komponentų, kiek nurodyta minimalaus pajėgumo argumentu.
lygus (O objektas) Lyginant nurodytą objektą su šiuo vektoriumi.
pirmasis elementas () Grąžina pirmąjį šio vektoriaus komponentą (0 indekso elementą).

kiekvienam (vartotojui

super E> veiksmas)

Atlieka nurodytą veiksmą kiekvienam Iterable elementui, kol visi elementai bus apdoroti arba veiksmas padarys išimtį.
gauti (int index) Grąžina elementą nurodytoje šio vektoriaus vietoje.
maišos kodas () Grąžina maišos kodo reikšmę šiam vektoriui.
indexOf (O objektas)

Grąžina pirmojo nurodyto elemento pasireiškimo šiame vektoriuje indeksą,

arba -1, jei šiame vektoriuje elemento nėra.

indexOf (O objektas, tarpinis indeksas) Grąžina pirmojo nurodyto elemento pasireiškimo šiame vektoriuje indeksą, ieškant pirmyn iš indekso, arba grąžina -1, jei elementas nerastas.
insertElementAt(E obj, int index) Įterpia nurodytą objektą kaip šio vektoriaus komponentą nurodytu indeksu.
Yra tuščias() Tikrina, ar šis vektorius neturi komponentų.
iteratorius () Tinkama seka pateikia šio sąrašo elementų iteratorių.
paskutinis elementas () Grąžina paskutinį vektoriaus komponentą.
paskutinis indeksas (O objektas)

Grąžina paskutinio nurodyto elemento pasireiškimo šiame vektoriuje indeksą,

arba -1, jei šiame vektoriuje elemento nėra.

lastIndexOf (O objektas, tarpinis indeksas) Grąžina paskutinio nurodyto elemento pasireiškimo šiame vektoriuje indeksą, ieškant atgal nuo indekso, arba grąžina -1, jei elementas nerastas.
listIterator() Grąžina sąrašo iteratorių virš šio sąrašo elementų (tinkama seka).
listIterator(int index)

Grąžina sąrašo iteratorių virš šio sąrašo elementų (tinkama seka),

pradedant nuo nurodytos sąrašo vietos.

jasmine Davis vaikystėje
pašalinti (int index) Pašalina elementą nurodytoje šio vektoriaus vietoje.
pašalinti (O objektas) Pašalina pirmąjį nurodyto elemento atvejį šiame vektoryje. Jei vektoryje elemento nėra, jis nesikeičia.
pašalinti viską (rinkinys c) Pašalina iš šio vektoriaus visus jo elementus, esančius nurodytoje kolekcijoje.
pašalinti visus elementus () Pašalina visus komponentus iš šio vektoriaus ir nustato jo dydį į nulį.
pašalinti elementą (objekto objektas) Iš šio vektoriaus pašalinamas pirmasis (mažiausiai indeksuotas) argumento įvykis.
RemoveElementAt(int index) Ištrina nurodyto indekso komponentą.
pašalinti, jei (predikacinis filtras) Pašalina visus šio rinkinio elementus, kurie atitinka nurodytą predikatą.

RemoveRange(int fromIndex,

int toIndex)

Iš šio sąrašo pašalinami visi elementai, kurių indeksas yra tarp fromIndex, inclusive ir toIndex, išskirtinis.
pakeisti viską (operatorius UnaryOperator)Kiekvienas šio sąrašo elementas pakeičiamas rezultatu, pritaikius operatorių tam elementui.
išlaikyti viską (rinkinys c) Išsaugo tik šio vektoriaus elementus, esančius nurodytoje kolekcijoje.
rinkinys (int indeksas, E elementas) Pakeičia elementą nurodytoje šio vektoriaus vietoje nurodytu elementu.
setElementAt(E obj, int index) Nustato komponentą, esantį nurodytoje šio vektoriaus indekse, kaip nurodytą objektą.
setSize (int new Size) Nustato šio vektoriaus dydį.
dydis () Grąžina šio vektoriaus komponentų skaičių.
Rūšiuoti (palyginimo priemonė c) Rūšiuoja šį sąrašą pagal nurodyto palyginimo sukeltą tvarką.
skirstytuvas () Sukuria vėlai įrišamą ir greitą skirstytuvą per šio sąrašo elementus.
posąrašas (int fromIndex, int toIndex) Grąžina šio sąrašo dalies tarp fromIndex, imtinai ir toIndex, išskirtinį vaizdą.
toArray () Grąžina masyvą, kuriame yra visi šio vektoriaus elementai teisinga tvarka.
toArray(T[] a) Grąžina masyvą, kuriame yra visi šio vektoriaus elementai teisinga tvarka; grąžinamo masyvo vykdymo laikas yra nurodyto masyvo.
toString() Grąžina šio vektoriaus eilutės atvaizdavimą, kuriame yra kiekvieno elemento eilutė.
apkarpyti dydį() Sumažina šio vektoriaus talpą iki dabartinio vektoriaus dydžio.

Pirmiausia aptarkime ir įgyvendinkime, kaip sukurti ir naudoti vektorių, prieš pradėdami taikyti šios klasės metodus.

Pavyzdys:

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 = naujas vektorius (n); // Naujų elementų pridėjimas // vektoriaus pabaigoje (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) + ' '); } }>

Išvestis
[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>

Pastaba:

  • Jei vektoriaus prieaugis nenurodytas, jo talpa padvigubės kiekviename prieaugio cikle.
  • Vektoriaus talpa negali būti mažesnė už dydį, ji gali jam prilygti.

Įvairių operacijų atlikimas Vector klasėje Java

Aptarkime įvairias Vector klasės operacijas, kurios išvardytos taip:

  1. Elementų pridėjimas
  2. Elementų atnaujinimas
  3. Elementų pašalinimas
  4. Elementų kartojimas

1 operacija: Elementų pridėjimas

Norėdami įtraukti elementus į vektorių, naudojame papildyti() metodas. Šis metodas yra perkrautas, kad būtų galima atlikti kelias operacijas pagal skirtingus parametrus. Jie išvardyti toliau taip:

  • pridėti (objektas): Šis metodas naudojamas elementui pridėti vektoriaus pabaigoje.
  • pridėti (int indeksas, objektas): Šis metodas naudojamas elementui įtraukti į tam tikrą vektorių indeksą.

Pavyzdys:

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 = naujas vektorius (); // Pasirinktinių elementų pridėjimas // naudojant add() metodą v2.add(1); v2.add(2); v2.add(3); // Vektorinių elementų spausdinimas konsolėje System.out.println('Vector v2 yra ' + v2); } }>> 

Išvestis:

filtravimo python


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

2 operacija: Elementų atnaujinimas

Pridėjus elementus, jei norime pakeisti elementą, tai galima padaryti naudojant rinkinys () metodas. Kadangi vektorius yra indeksuotas, elementas, kurį norime pakeisti, nurodomas elemento indeksu. Todėl šis metodas paima indeksą ir atnaujintą elementą, kuris turi būti įterptas į tą indeksą.

Pavyzdys

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 = naujas vektorius (); // Naudokite add() metodą, norėdami įtraukti elementus į vektorių vec_tor.add(12); vector_tor.add(23); vector_tor.add(22); vector_tor.add(10); vector_tor.add(20); // Vektoriaus rodymas System.out.println('Vector: ' + vector_tor); // Naudojant set() metodą 12 pakeisti 21 System.out.println('Pakeistas objektas yra: ' + vec_tor.set(0, 21)); // Metodo set() naudojimas norint pakeisti 20 į 50 System.out.println('Pakeistas objektas yra: ' + vec_tor.set(4, 50)); // Rodomas modifikuotas vektorius System.out.println('Naujasis vektorius yra:' + vec_tor); } }>>  
Išvestis 3 operacija: Elementų pašalinimas

Norėdami pašalinti elementą iš vektoriaus, galime naudoti pašalinti () metodas. Šis metodas yra perkrautas, kad būtų galima atlikti kelias operacijas pagal skirtingus parametrus. Jie yra:

  • pašalinti (objektas): Šis metodas naudojamas objektui pašalinti iš vektoriaus. Jei tokių objektų yra keli, tada pirmasis objekto įvykis pašalinamas.
  • pašalinti (int index): Kadangi vektorius indeksuojamas, šis metodas paima sveikojo skaičiaus reikšmę, kuri paprasčiausiai pašalina elementą, esantį tame konkrečiame vektoriaus indekse. Pašalinus elementą, visi elementai perkeliami į kairę, kad užpildytų erdvę ir atnaujinami objektų indeksai.

Pavyzdys

kaip perdaryti per photoshop
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); } }>

Išvestis:

4 veiksmas: vektoriaus kartojimas

Yra keletas būdų, kaip kartoti vektorių. Garsiausi būdai yra pagrindinio for ciklo naudojimas kartu su a gauti () būdas gauti elementą konkrečiame indekse ir pažengęs už kilpą .

Pavyzdys

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 = naujas vektorius(); // Pridėti elementus naudojant add() metodą v.add('Geeks'); v.add('Geeks'); v.add(1, 'Už'); // Naudojant metodą Get ir // 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 + ' '); } }>

Išvestis
Geeks For Geeks Geeks For Geeks>

Pastaba: Duok paskaityti „ArrayList vs Vector“ klasė „Java“. kad geriau suvoktum.

„Java“ programoje „Vector“ klasė yra „Java Collections Framework“ dalis ir suteikia dinaminį sąrašo sąsajos masyvo įgyvendinimą. Jis buvo pridėtas pradiniame „Java“ leidime („Java 1.0“) ir suteikia daugybę metodų, kaip manipuliuoti vektoriaus elementais, įskaitant elementų pridėjimą, įterpimą ir pašalinimą.

Štai paprastas pavyzdys, parodantis, kaip naudoti vektorių Java:

Java
import java.util.Vector; public class VectorExample { public static void main(String[] args) { // Create a new vector Vector v = naujas vektorius(3, 2); // Pridėti elementus į vektorių v.addElement(1); v.addElement(2); v.addElement(3); // Įterpti elementą indekse 1 v.insertElementAt(0, 1); // Pašalinti 2 indekso elementą v.removeElementAt(2); // Spausdinti vektoriaus elementus (int i : v) { System.out.println(i); } } }>

Išvestis
1 0 3>

Atminkite, kad Vector klasė yra sinchronizuota, o tai reiškia, kad kelios gijos gali pasiekti tą patį vektorių nesukeldamos problemų. Tačiau šis sinchronizavimas kainuoja našumą, todėl jei jums nereikia dalytis vektoriaus tarp kelių gijų, paprastai geriau naudoti alternatyvią klasę, pvz., ArrayList, kuri nėra sinchronizuota.

„Vector“ naudojimo Java programoje pranašumai:

  1. Sinchronizavimas: Kaip minėta anksčiau, vektorius yra sinchronizuotas, todėl jį saugu naudoti kelių gijų aplinkoje.
  2. Dinaminis dydis: vektoriaus dydis gali dinamiškai didėti arba mažėti, kai elementai pridedami arba pašalinami, todėl jums nereikia jaudintis nustatant pradinį dydį, kuriame tilptų visi elementai.
  3. Senas palaikymas: „Vector“ buvo „Java“ dalis nuo pat jos pradžios ir vis dar palaikoma, todėl tai yra geras pasirinkimas, jei reikia dirbti su senesniu „Java“ kodu, kuris naudoja „Vector“.

„Vector“ naudojimo Java programoje trūkumai:

  1. Našumas: „Vector“ sinchronizavimas gali lemti lėtesnį našumą, palyginti su kitomis rinkinių klasėmis, pvz., „ArrayList“.
  2. Senas kodas: Nors Vector vis dar palaikoma, naujesnis Java kodas dažnai rašomas naudojant modernesnes rinkinių klases, todėl gali būti sunkiau rasti vektorių pavyzdžių ir palaikymą.
  3. Nereikalingos papildomos išlaidos: jei jums nereikia „Vector“ sinchronizavimo ypatybių, naudodami jį, jūsų kodas papildys nereikalingas išlaidas.

Žinynas

Gera žinynas norint sužinoti apie Java kolekcijų sistemą ir vektorių yra Naftalin ir Wadler Java kolekcijos. Šioje knygoje išsamiai apžvelgiama Java kolekcijų sistema, įskaitant vektorių, ir pateikiama daug pavyzdžių bei pratimų, padedančių suprasti, kaip efektyviai naudoti šias klases.