W tym samouczku dowiemy się o klasie Vector i jak z niej korzystać. Dowiemy się również, czym różni się ona od klasy ArrayList i dlaczego zamiast tego powinniśmy używać list tablicowych.
Vector
Klasa jest implementacja List
interfejsu, który pozwala nam tworzyć skalowalne-tablice podobne do klasy ArrayList.
Wektor Java a ArrayList
W Javie zarówno ArrayList
i Vector
implementuje List
interfejs, jak i zapewnia te same funkcje. Są jednak między nimi pewne różnice.
Vector
Klasa synchronizuje każdą indywidualną operację. Oznacza to, że ilekroć chcemy wykonać jakąś operację na wektorach, Vector
klasa automatycznie nakłada blokadę na tę operację.
Dzieje się tak, ponieważ gdy jeden wątek uzyskuje dostęp do wektora, a jednocześnie inny wątek próbuje uzyskać do niego dostęp, ConcurrentModificationException
generowany jest wyjątek . Stąd to ciągłe używanie blokady dla każdej operacji sprawia, że wektory są mniej wydajne.
Jednak na listach tablic metody nie są synchronizowane. Zamiast tego używa Collections.synchronizedList()
metody, która synchronizuje listę jako całość.
Uwaga: zaleca się używanie ArrayList
zamiast, Vector
ponieważ wektory nie są wątkowo bezpieczne i są mniej wydajne.
Tworzenie wektora
Oto jak możemy tworzyć wektory w Javie.
Vector vector = new Vector();
Tutaj Type wskazuje typ połączonej listy. Na przykład,
// create Integer type linked list Vector vector= new Vector(); // create String type linked list Vector vector= new Vector();
Metody Vector
Vector
Klasy również implementacje skalowalny-tablicę List
interfejsu (podobne do ArrayList
klasy). Oto niektóre z Vector
metod:
Dodaj elementy do wektora
add(element)
- dodaje element do wektorówadd(index, element)
- dodaje element do określonej pozycjiaddAll(vector)
- dodaje wszystkie elementy wektora do innego wektora
Na przykład,
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); ) )
Wynik
Wektor: (Pies, Koń, Kot) Nowy wektor: (Krokodyl, Pies, Koń, Kot)
Dostęp do elementów wektora
get(index)
- zwraca element określony przez indeksiterator()
- zwraca obiekt iteratora, aby uzyskać sekwencyjny dostęp do elementów wektora
Na przykład,
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(", "); ) ) )
Wynik
Element w indeksie 2: Kot Wektor: Pies, Koń, Kot,
Usuń elementy wektorowe
remove(index)
- usuwa element z określonej pozycjiremoveAll()
- usuwa wszystkie elementyclear()
- usuwa wszystkie elementy. Jest bardziej wydajny niżremoveAll()
Na przykład,
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); ) )
Wynik
Początkowy wektor: (Pies, Koń, Kot) Usunięty element: Koń Nowy wektor: (Pies, Kot) Wektor po wyczyszczeniu (): ()
Inne metody wektorowe
Metody | Opisy |
---|---|
set() | zmienia element wektora |
size() | zwraca rozmiar wektora |
toArray() | konwertuje wektor na tablicę |
toString() | konwertuje wektor na String |
contains() | przeszukuje wektor pod kątem określonego elementu i zwraca wynik logiczny |