V tomto výučbe sa dozvieme o triede Vector a o tom, ako ju používať. Dozvieme sa tiež, ako sa líši od triedy ArrayList a prečo by sme mali namiesto toho používať zoznamy polí.
Vector
Trieda je implementácia List
rozhrania, ktoré nám umožňuje vytvoriť meniť veľkosť-pole podobné triedy ArrayList.
Java Vector vs. ArrayList
V Jave, ako ArrayList
a Vector
implementuje List
rozhranie a poskytuje rovnaké funkcie. Existujú však určité rozdiely medzi nimi.
Vector
Trieda synchronizuje jednotlivé operácie. To znamená, že kedykoľvek chceme vykonať nejakú operáciu na vektoroch, Vector
trieda na túto operáciu automaticky použije zámok.
Je to tak preto, lebo keď jedno vlákno pristupuje k vektoru a súčasne sa iné vlákno pokúša o prístup k nemu, ConcurrentModificationException
vygeneruje sa volaná výnimka . Toto nepretržité používanie zámku pre každú operáciu preto robí vektory menej efektívne.
V zoznamoch polí však nie sú metódy synchronizované. Namiesto toho používa Collections.synchronizedList()
metódu, ktorá synchronizuje zoznam ako celok.
Poznámka: Odporúča sa používať ArrayList
namiesto toho, Vector
pretože vektory nie sú bezpečné pre vlákna a sú menej účinné.
Vytvorenie vektora
Takto môžeme vytvárať vektory v Jave.
Vector vector = new Vector();
Typ tu označuje typ prepojeného zoznamu. Napríklad,
// create Integer type linked list Vector vector= new Vector(); // create String type linked list Vector vector= new Vector();
Metódy vektora
Vector
Trieda tiež poskytuje implementácia meniť veľkosť-pole na List
rozhraní (podobné ArrayList
skupiny). Niektoré z týchto Vector
metód sú:
Pridajte prvky do vektora
add(element)
- pridá prvok do vektorovadd(index, element)
- pridá prvok na zadanú pozíciuaddAll(vector)
- pridá všetky prvky vektora do iného vektora
Napríklad,
import java.util.Vector; class Main ( public static void main(String() args) ( Vector mammals= new Vector(); // Using the add() method mammals.add("Dog"); mammals.add("Horse"); // Using index number mammals.add(2, "Cat"); System.out.println("Vector: " + mammals); // Using addAll() Vector animals = new Vector(); animals.add("Crocodile"); animals.addAll(mammals); System.out.println("New Vector: " + animals); ) )
Výkon
Vektor: (pes, kôň, mačka) Nový vektor: (krokodíl, pes, kôň, mačka)
Prístup k vektorovým prvkom
get(index)
- vráti prvok určený indexomiterator()
- vráti iteračný objekt k sekvenčnému prístupu k vektorovým prvkom
Napríklad,
import java.util.Iterator; import java.util.Vector; class Main ( public static void main(String() args) ( Vector animals= new Vector(); animals.add("Dog"); animals.add("Horse"); animals.add("Cat"); // Using get() String element = animals.get(2); System.out.println("Element at index 2: " + element); // Using iterator() Iterator iterate = animals.iterator(); System.out.print("Vector: "); while(iterate.hasNext()) ( System.out.print(iterate.next()); System.out.print(", "); ) ) )
Výkon
Prvok v indexe 2: Vektor mačky: pes, kôň, mačka,
Odstráňte vektorové prvky
remove(index)
- odstráni prvok z určenej polohyremoveAll()
- odstráni všetky prvkyclear()
- odstráni všetky prvky. Je to efektívnejšie akoremoveAll()
Napríklad,
import java.util.Vector; class Main ( public static void main(String() args) ( Vector animals= new Vector(); animals.add("Dog"); animals.add("Horse"); animals.add("Cat"); System.out.println("Initial Vector: " + animals); // Using remove() String element = animals.remove(1); System.out.println("Removed Element: " + element); System.out.println("New Vector: " + animals); // Using clear() animals.clear(); System.out.println("Vector after clear(): " + animals); ) )
Výkon
Počiatočný vektor: (pes, kôň, mačka) Odstránený prvok: kôň Nový vektor: (pes, mačka) Vektor po vyčistení (): ()
Ostatné vektorové metódy
Metódy | Popisy |
---|---|
set() | zmení prvok vektora |
size() | vráti veľkosť vektora |
toArray() | prevádza vektor na pole |
toString() | prevádza vektor na String |
contains() | vyhľadá vektor pre zadaný prvok a vráti boolovský výsledok |