logo

Klasa wektorowa w Javie

Klasa Vector implementuje rozwijalną tablicę obiektów. Wektory należą do starszych klas, ale teraz są w pełni kompatybilne z kolekcjami. Znajduje się w pakiet java.util i wdrożyć Lista interfejs, dzięki czemu możemy używać wszystkich metod interfejsu List, jak pokazano poniżej, w następujący sposób:

Klasa wektorowa w Javie

  • Vector implementuje dynamiczną tablicę, co oznacza, że ​​może rosnąć lub zmniejszać się w zależności od potrzeb. Podobnie jak tablica, zawiera komponenty, do których można uzyskać dostęp za pomocą indeksu będącego liczbą całkowitą.
  • Są bardzo podobne do Lista tablic , ale wektor jest zsynchronizowany i ma pewne starsze metody, których nie zawiera struktura kolekcji.
  • Utrzymuje również kolejność wstawiania, taką jak ArrayList. Mimo to jest rzadko używany w środowisku bez wątków zsynchronizowane i z tego powodu daje słabą wydajność w dodawaniu, wyszukiwaniu, usuwaniu i aktualizowaniu swoich elementów.
  • Iteratory zwracane przez klasę Vector są niezawodne. W przypadku jednoczesnej modyfikacji kończy się niepowodzeniem i wyrzuca plik Wyjątek ConcurrentModificationException.

Składnia:



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

Tutaj, I to typ elementu.

  • Rozciąga się Lista abstrakcyjna i wdraża Lista interfejsy.
  • Implementuje interfejsy Serializable, Cloneable, Iterable, Collection, List, RandomAccess.
  • Bezpośrednio znaną podklasą jest Stos .

Ważne punkty dotyczące przyrostu pojemności wektora są następujące:

Jeśli przyrost jest określony, Vector będzie się zwiększać zgodnie z nim w każdym cyklu alokacji. Jeśli jednak przyrost nie zostanie określony, pojemność wektora zostanie podwojona w każdym cyklu alokacji. Vector definiuje trzech chronionych członków danych:

  • int pojemnośćPrzyrost: Zawiera wartość przyrostu.
  • int liczba elementów: Liczba elementów aktualnie przechowywanych w wektorze.
  • Dane elementu obiektu[]: Tablica przechowująca wektor jest w nim przechowywana.

Typowe błędy w deklaracji wektorów to: następuje :

  • Wektor rzuca Wyjątek IllegalArgument jeśli rozmiar początkowy zdefiniowanego wektora jest ujemny.
  • Jeśli określona kolekcja ma wartość null, zgłasza Wyjątek NullPointer .

Konstruktorzy

1. Wektor(): Tworzy domyślny wektor o początkowej pojemności wynoszącej 10.

Vector v = new Vector();>

2. Wektor (rozmiar całkowity): Tworzy wektor, którego początkowa pojemność jest określona przez rozmiar.

Vector v = new Vector(int size);>

3. Wektor(int rozmiar, int przyrost): Tworzy wektor, którego początkowa pojemność jest określona przez rozmiar, a przyrost jest określony przez inkr. Określa liczbę elementów do przydzielenia przy każdorazowej zmianie rozmiaru wektora w górę.

kwartał w biznesie
Vector v = new Vector(int size, int incr);>

4. Wektor(Kolekcja c): Tworzy wektor zawierający elementy kolekcji c.

Vector v = new Vector(Collection c);>

Metody w klasie Vector

METODA

OPIS

dodaj (i i) Dołącza określony element na końcu tego wektora.
add(int indeks, element E) Wstawia określony element w określonej pozycji w tym Vector.

dodaj wszystko (kolekcja

rozciąga E> c)

Dołącza wszystkie elementy określonej kolekcji na koniec wektora w kolejności, w jakiej są zwracane przez iterator określonej kolekcji.

addAll(int indeks,

Kolekcja c)

int na ciąg znaków w Javie
Wstaw wszystkie elementy z określonej kolekcji do tego wektora w określonej pozycji.
dodajElement(E obiekt) Dodaje określony komponent na końcu tego wektora, zwiększając jego rozmiar o jeden.
pojemność() Zwraca bieżącą pojemność tego wektora.
jasne() Usuwa wszystkie elementy z tego wektora.
klon() Zwraca klon tego wektora.
zawiera (obiekt o) Zwraca wartość true, jeśli ten wektor zawiera określony element.
zawieraWszystko (kolekcja c) Zwraca wartość true, jeśli ten wektor zawiera wszystkie elementy z określonej kolekcji.
copyInto (obiekt [] anArray) Kopiuje składniki tego wektora do określonej tablicy.
elementAt(indeks int) Zwraca komponent o określonym indeksie.
elementy() Zwraca wyliczenie składników tego wektora.
zapewnij pojemność (int min pojemność) W razie potrzeby zwiększa pojemność tego wektora, aby zapewnić, że może on pomieścić co najmniej liczbę komponentów określoną przez argument minimalnej pojemności.
równa się (obiekt o) Porównuje określony obiekt z tym wektorem dla równości.
pierwszy element() Zwraca pierwszy składnik (element o indeksie 0) tego wektora.

dla każdego (konsument

super E> akcja)

Wykonuje daną akcję dla każdego elementu Iterable, dopóki wszystkie elementy nie zostaną przetworzone lub akcja nie zgłosi wyjątku.
pobierz (indeks int) Zwraca element w określonej pozycji w tym wektorze.
hashCode() Zwraca wartość kodu skrótu dla tego wektora.
indeksOf(Obiekt o)

Zwraca indeks pierwszego wystąpienia określonego elementu w tym wektorze,

lub -1, jeśli ten wektor nie zawiera elementu.

indeksOf(Obiekt o, int indeks) Zwraca indeks pierwszego wystąpienia określonego elementu w tym wektorze, wyszukując do przodu od indeksu, lub zwraca -1, jeśli element nie zostanie znaleziony.
wstawElementAt(E obj, int indeks) Wstawia określony obiekt jako składnik tego wektora o określonym indeksie.
jest pusty() Sprawdza, czy ten wektor nie ma składników.
iterator() Zwraca iterator po elementach na tej liście w odpowiedniej kolejności.
ostatni element() Zwraca ostatni składnik wektora.
lastIndexOf(obiekt o)

Zwraca indeks ostatniego wystąpienia określonego elementu w tym wektorze,

lub -1, jeśli ten wektor nie zawiera elementu.

lastIndexOf(Obiekt o, int indeks) Zwraca indeks ostatniego wystąpienia określonego elementu w tym wektorze, przeszukując wstecz od indeksu, lub zwraca -1, jeśli element nie został znaleziony.
listaIterator() Zwraca iterator listy po elementach tej listy (w odpowiedniej kolejności).
listIterator(int indeks)

Zwraca iterator listy po elementach tej listy (w odpowiedniej kolejności),

zaczynając od określonej pozycji na liście.

usuń(indeks int) Usuwa element w określonej pozycji w tym wektorze.
usuń(obiekt o) Usuwa pierwsze wystąpienie określonego elementu w tym wektorze. Jeśli wektor nie zawiera elementu, pozostaje niezmieniony.
usuń wszystko (kolekcja c) Usuwa z tego wektora wszystkie jego elementy zawarte w określonej kolekcji.
usuńWszystkieElementy() Usuwa wszystkie komponenty z tego wektora i ustawia jego rozmiar na zero.
usuńElement (obiekt obiektu) Usuwa pierwsze (najniżej indeksowane) wystąpienie argumentu z tego wektora.
usuńElementAt(int indeks) Usuwa komponent o określonym indeksie.
usuńIf(filtr predykatu) Usuwa wszystkie elementy tej kolekcji, które spełniają podany predykat.

usuńZakres(int zIndeksu,

int do indeksu)

Hasext Java
Usuwa z tej listy wszystkie elementy, których indeks znajduje się pomiędzy fromIndex (włącznie) a toIndex (wyłącznie).
zamień wszystko (operator UnaryOperator)Zastępuje każdy element tej listy wynikiem zastosowania operatora do tego elementu.
zachowaj wszystko (kolekcja c) Zachowuje tylko elementy tego wektora zawarte w określonej kolekcji.
set(indeks int, element E) Zastępuje element w określonej pozycji w tym Vector określonym elementem.
setElementAt(E obj, int indeks) Ustawia komponent o określonym indeksie tego wektora jako określony obiekt.
setSize(int nowyRozmiar) Ustawia rozmiar tego wektora.
rozmiar() Zwraca liczbę komponentów tego wektora.
sort(Komparator c) Sortuje tę listę zgodnie z kolejnością indukowaną przez określony komparator.
rozdzielacz() Tworzy późno wiążący i niezawodny Spliterator dla elementów na tej liście.
subList(int zindeksu, int doindeksu) Zwraca widok części tej listy pomiędzy fromIndex (włącznie) i toIndex (wyłącznie).
do tablicy() Zwraca tablicę zawierającą wszystkie elementy tego wektora we właściwej kolejności.
doArray(T[]a) Zwraca tablicę zawierającą wszystkie elementy tego Vectora we właściwej kolejności; typem środowiska wykonawczego zwróconej tablicy jest typ określonej tablicy.
doString() Zwraca ciąg reprezentujący ten wektor, zawierający ciąg reprezentujący każdy element.
przytnij do rozmiaru() Przycina pojemność tego wektora do bieżącego rozmiaru wektora.

Najpierw omówmy i zaimplementujmy, jak utworzyć i używać wektora, zanim przejdziemy do metod tej klasy.

Przykład:

Jawa
// 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 = nowy wektor (N); // Dodawanie nowych elementów na // końcu wektora 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) + ' '); } }>

Wyjście
[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>

Notatka:

  • Jeśli przyrost wektora nie zostanie określony, jego pojemność będzie podwajana w każdym cyklu przyrostu.
  • Pojemność wektora nie może być mniejsza niż wielkość, może być jej równa.

Wykonywanie różnych operacji na klasie Vector w Javie

Omówmy różne operacje na klasie Vector, które są wymienione w następujący sposób:

  1. Dodawanie elementów
  2. Aktualizacja elementów
  3. Usuwanie elementów
  4. Iterowanie po elementach

Operacja 1: Dodawanie elementów

Aby dodać elementy do wektora, używamy metody dodać() metoda. Ta metoda jest przeciążona, aby wykonać wiele operacji w oparciu o różne parametry. Są one wymienione poniżej w następujący sposób:

  • dodaj (obiekt): Ta metoda służy do dodawania elementu na końcu wektora.
  • dodaj(int indeks, obiekt): Ta metoda służy do dodawania elementu o określonym indeksie w wektorze.

Przykład:

Jawa
// 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 = nowy wektor (); // Dodawanie własnych elementów // przy użyciu metody add() v2.add(1); v2.add(2); v2.add(3); // Wydruk elementów wektorowych na konsolę System.out.println('Wektor v2 to ' + v2); } }>

Wyjście:


ile miast jest w stanach zjednoczonych
Vector v1 is [1, 2, geeks, forGeeks, 3] Vector v2 is [1, 2, 3]>

Operacja 2: Aktualizacja elementów

Jeśli po dodaniu elementów będziemy chcieli zmienić dany element, możemy to zrobić za pomocą przycisku ustawić() metoda. Ponieważ wektor jest indeksowany, do elementu, który chcemy zmienić, odwołuje się indeks elementu. Dlatego ta metoda pobiera indeks i zaktualizowany element, który ma zostać wstawiony pod tym indeksem.

Przykład

Jawa
// 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 = nowy wektor (); // Użyj metody add(), aby dodać elementy do wektora vec_tor.add(12); vec_tor.add(23); vec_tor.add(22); vec_tor.add(10); vec_tor.add(20); // Wyświetlanie wektora System.out.println('Vector: ' + vec_tor); // Użycie metody set() do zamiany 12 na 21 System.out.println('Zastępowany obiekt to: ' + vec_tor.set(0, 21)); // Użycie metody set() do zamiany 20 na 50 System.out.println('Zastępowany obiekt to: ' + vec_tor.set(4, 50)); // Wyświetlenie zmodyfikowanego wektora System.out.println('Nowy wektor to:' + vec_tor); } }>

Wyjście
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]>

Operacja 3: Usuwanie elementów

Aby usunąć element z wektora, możemy użyć metody usunąć() metoda. Ta metoda jest przeciążona, aby wykonać wiele operacji w oparciu o różne parametry. Oni są:

  • usuń (obiekt): Ta metoda służy do usuwania obiektu z wektora. Jeżeli takich obiektów jest wiele, to pierwsze wystąpienie obiektu jest usuwane.
  • usuń(intindeks): Ponieważ wektor jest indeksowany, metoda ta przyjmuje wartość całkowitą, która po prostu usuwa element znajdujący się pod tym konkretnym indeksem w wektorze. Po usunięciu elementu wszystkie elementy zostają przesunięte w lewo w celu wypełnienia przestrzeni, a indeksy obiektów zostają zaktualizowane.

Przykład

Jawa
// 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); } }>

Wyjście:

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

Operacja 4: Iteracja wektora

Istnieje wiele sposobów iteracji po wektorze. Najbardziej znane sposoby to użycie podstawowej pętli for w połączeniu z a Dostawać() metoda uzyskania elementu o określonym indeksie i zaawansowane dla pętli .

Przykład

sortuj tablicę w Javie
Jawa
// 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 = nowy wektor(); // Dodaj elementy za pomocą metody add() v.add('Geeks'); v.add('Maniacy'); v.add(1, 'For'); // Używając metody Get i // pętli 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 + ' '); } }>

Wyjście
Geeks For Geeks Geeks For Geeks>

Notatka: Przeczytaj koniecznie Klasa ArrayList vs Vector w Javie żeby to lepiej ogarnąć.

W Javie klasa Vector jest częścią Java Collections Framework i zapewnia implementację dynamicznej tablicy interfejsu List. Został on dodany w oryginalnej wersji języka Java (Java 1.0) i zapewnia szereg metod manipulowania elementami wektora, w tym dodawanie, wstawianie i usuwanie elementów.

Oto prosty przykład pokazujący, jak używać wektora w Javie:

Jawa
import java.util.Vector; public class VectorExample { public static void main(String[] args) { // Create a new vector Vector v = nowy wektor (3, 2); // Dodaj elementy do wektora v.addElement(1); v.addElement(2); v.addElement(3); // Wstaw element o indeksie 1 v.insertElementAt(0, 1); // Usuń element o indeksie 2 v.removeElementAt(2); // Wydrukuj elementy wektora for (int i : v) { System.out.println(i); } } }>

Wyjście
1 0 3>

Należy pamiętać, że klasa Vector jest zsynchronizowana, co oznacza, że ​​wiele wątków może uzyskać dostęp do tego samego wektora bez powodowania problemów. Jednak ta synchronizacja odbywa się kosztem wydajności, więc jeśli nie musisz współdzielić wektora między wieloma wątkami, ogólnie lepiej jest użyć alternatywnej klasy, takiej jak ArrayList, która nie jest zsynchronizowana.

Zalety używania Vectora w Javie:

  1. Synchronizacja: Jak wspomniano wcześniej, Vector jest zsynchronizowany, dzięki czemu można go bezpiecznie używać w środowisku wielowątkowym.
  2. Rozmiar dynamiczny: Rozmiar wektora może dynamicznie rosnąć lub zmniejszać się w miarę dodawania lub usuwania elementów, więc nie musisz się martwić o ustawienie początkowego rozmiaru, który pomieści wszystkie elementy.
  3. Obsługa starszych wersji: Vector jest częścią języka Java od jego powstania i nadal jest obsługiwany, więc jest dobrym rozwiązaniem, jeśli musisz pracować ze starszym kodem Java korzystającym z Vector.

Wady używania Vectora w Javie:

  1. Wydajność: Synchronizacja w Vector może prowadzić do wolniejszej wydajności w porównaniu z innymi klasami kolekcji, takimi jak ArrayList.
  2. Starszy kod: Mimo że Vector jest nadal obsługiwany, nowszy kod Java jest często pisany przy użyciu nowocześniejszych klas kolekcji, więc znalezienie przykładów i wsparcia dla Vector może być trudniejsze.
  3. Niepotrzebne obciążenie: Jeśli nie potrzebujesz funkcji synchronizacji Vector, użycie jej spowoduje niepotrzebne obciążenie Twojego kodu.

Książka referencyjna

Dobrym podręcznikiem do nauki o frameworku i wektorze kolekcji Java jest Java Collections autorstwa Naftalina i Wadlera. Książka ta zapewnia kompleksowe spojrzenie na framework kolekcji Java, w tym Vector, oraz zawiera wiele przykładów i ćwiczeń, które pomogą Ci zrozumieć, jak efektywnie korzystać z tych klas.