Java - Klasa Vector


Java Vector vs. ArrayList

U Javi, i ArrayList i Vector implementuju List interfejs i pružaju iste funkcionalnosti. Međutim, među njima postoje neke razlike. Klasa Vector sinhronizuje svaku pojedinačnu operaciju. To znači da kad god želimo da izvršimo neku operaciju na vektorima, klasa Vector automatski primenjuje zaključavanje na tu operaciju. To je zato što kada jedna nit pristupa vektoru, a u isto vrijeme druga nit pokušava da joj pristupi, generiše se izuzetak koji se zove ConcurrentModificationException. Dakle, ova kontinuirana upotreba zaključavanja za svaku operaciju čini vektore manje efikasnim. Međutim, u listama nizova metode nisu sinhronizovane. Umjesto toga, koristi metodu Collections.synchronizedList() koja sinhronizuje listu u cjelini.



Kreiranje vektora

Evo kako možemo kreirati vektore u Javi.

Vector<Type> vector = new Vector<>();

Ovdje Type označava tip povezane liste. Na primjer:

// Kreiranje povezane liste tipa Integer
Vector<Integer> vector= new Vector<>();

// kreiranje povezane liste tipa String
Vector<String> vector= new Vector<>();


Dodavanje elemenata vektoru

  • add(element) - dodaje element vektorima
  • add(index, element) - dodaje element na navedenu poziciju
  • addAll(vector) - dodaje sve elemente vektora drugom vektoru

Na primjer:

import java.util.Vector;

class Main {
    public static void main(String[] args) {
        Vector<String> mammals= new Vector<>();

        // Korištenje metode add() 
        mammals.add("Pas");
        mammals.add("Konj");

        // Korištenje broja index-sa
        mammals.add(2, "Mačka");
        System.out.println("Vektor: " + mammals);

        // Korištenje metode addAll()
        Vector<String> animals = new Vector<>();
        animals.add("Krokodil");

        animals.addAll(mammals);
        System.out.println("Novi vektor: " + animals);
    }
}

Prikaz koda iz gornjeg primjera izgledaće ovako:

Vektor: [Pas, Konj, Mačka]
Novi vektro: [Krokodil, Pas, Konj, Mačka]


Pristupanje vektorskim elementima

  • get(index) - vraća element specifikovan indeksom
  • iterator() - vraća objekat iteratora za sekvencijalni pristup vektorskim elementima

Na primjer:

import java.util.Iterator;
import java.util.Vector;

class Main {
    public static void main(String[] args) {
        Vector<String> animals= new Vector<>();
        animals.add("Pas");
        animals.add("Konj");
        animals.add("Mačka");

        // Korištenje get()
        String element = animals.get(2);
        System.out.println("Element pod index-som 2 je: " + element);

        // Korištenje iterator()
        Iterator<String> iterate = animals.iterator();
        System.out.print("Vektor: ");
        while(iterate.hasNext()) {
            System.out.print(iterate.next());
            System.out.print(", ");
        }
    }
}

Prikaz koda iz gornjeg primjera izgledaće ovako:

Element pod index-som 2 je: Mačka
Vektor: Pas, Konj, Mačka,


Uklanjanje vektorskih elemenata

  • remove(index) - uklanja element sa određene pozicije
  • removeAll() - uklanja sve elemente
  • clear() - uklanja sve elemente. Efikasniji je od removeAll()

Na primjer:

import java.util.Vector;

class Main {
    public static void main(String[] args) {
        Vector<String> animals= new Vector<>();
        animals.add("Pas");
        animals.add("Konj");
        animals.add("Mačka");

        System.out.println("Inicijalni vektor: " + animals);

        // Korištenje remove()
        String element = animals.remove(1);
        System.out.println("Uklonjeni element: " + element);
        System.out.println("Novi vektor: " + animals);

        // Korištenje clear()
        animals.clear();
        System.out.println("Vektor nakon clear() je: " + animals);
    }
}

Prikaz koda iz gornjeg primjera izgledaće ovako:

Inicijalni vektor: [Pas, Konj, Mačka]
Uklonjeni element: Konj
Novi vektor: [Pas, Mačka]
Vektor nakon clear() je: []


Druge vektorske metode

Metoda Opis
set() Mijenja element vektora.
size() Vraća veličinu vektora.
toArray() Konvertuje vektor u niz.
toString() Konvertuje vektor u string.
contains() Pretražuje vektor za navedeni element i vraća logički rezultat.