Vector Sınıfı

java.util
Class Vector

java.lang.Object

  |

  +--java.util.AbstractCollection

        |

        +--java.util.AbstractList

              |

              +--java.util.Vector

 

Java dilinde Array’in ne kadar kullanışlı bir sınıf olduğunu görmüştük. Ancak, array’in uzunluğu; yani bileşenlerinin sayısı array bildiriminde belirleniyor ve bu uzunluk daha sonra değiştirilemiyordu. Bazı uygulamalarda, bu özelik ciddi bir handikap oluşturur. Java 2, bu sorunu çözmek için Vector sınıfını ve benzer işi yapan ArrayList sınıfını ortaya koydu. ArrayList senkronize olmadığı için Vector sınıfına göre daha hızlıdır. Elbette hızlı olmanın bir bedeli vardır. Senkronize olmaması demek,  çoklu işlem ortamında güvenirliği azalır.

Java 2 sürümünde, Vector sınıfına ArrayList sınıfının bir çok metodu eklendi. Böylece, Vector sınıfı bir çok uygulamada Array sınıfının yerini aldı.

Vector sınıfı yalnızca nesneler içerebilir; ilkel veri tiplerini içeremez. İlkel veri tipleri kullanılacaksa, onların bir nesne içine konulması gerekir. Örneğin  int tipinden Vector sınıfı tanımlanamaz, ama Integer sınıfından tanımlanabilir. int veri tipi, Integer sınıfı tarafından sarmalandığı için, sonunda int tipi içeren Vector sınıfı elde edilir. 

 

Vector Yaratma

Programda Vector nesnesi yaratmak için ya java.util.Vector paketi ya da java.util.* paketi çağrılmalıdır. Bunu yapmak için, programın başına

import java.util.Vector;

ya da

import java.util.*;.

yazılmalıdır. Sonra aşağıdaki kurucularda istenen birisiyle vektör sınıfı yaratılır.

Vector Kurucuları (constructors)

Vector v = new  Vector();

deyimi  uzunluğu 10 olan boş bir vektör yaratır. Uzunluk belirtilmediği zaman, vektör sınıfının öntanımlı (default) uzunluğu daima 10 bileşendir.

Vector v = new  Vector(Collection c);

deyimi belirtilen koleksiyonun öğelerini içeren bir vektör yaratır.

Vector v = new  Vector(int  başlangıçKapasitesi);

deyimi, başlangıç kapasitesi belirlenen boş bir vektör yaratır. Standart kapasite artışı 0 dır.

Vector v = new  Vector(int  başlangıçKapasite,  int  kapasiteArtışı);

deyimi, başlangıç kapasitesi belirlenen boş bir vektör yaratır. Kapasite artışı kapasiteArtışı ile verilen int değerdir.

Vector v = new Vector();

deyimi kullanılır. Bu deyim 10 bileşenli bir vektör yaratır; yani vektörün öntanımlı uzunluğu 10 dur. Eğer uzunluğu kendimiz belirlemek istiyorsak, örneğin 215 bileşenli bir vektör için

Vector v = new Vector(215);

deyimini yazarız.

 

Vektörün Uzunluğunu Değiştirme

Vector, özünde bir arraydir; arrayden öneli farkı uzunluğunundeğiştirilebilir oluşudur. Vector’ün bileşenlerinin hepsine değer atanır ve yeni bileşen ekleme gereksemesi ortaya çıkarsa, teknik olarak yapılan iş şudur:

Mevcut vektörün bileşen sayısından bir fazla bileşeni olan bir Vector yaratılır. Eski Vector’ün bileşenleri, sırasıyla, yeni vektörün bileşenlerine aktarılır. En sona eklenen yeni bileşene yeni değer girilir. Tabii, bu işlem biraz zaman alıcıdır. O nedenle, gerekseme duyulacak bileşen sayısı başlangıçta biliniyorsa, vektör yerine array tercih edilmelidir.

Tabii, vektörün bileşenlerine ekleme yapılabildiği gibi, istenen bileşen silinebilir, bileşenlerin arasına yeni bileşen yerleştirilebilir.

Vector’e Yeni Bileşen Ekleme

Vektöre yeni bileşen eklemek için

v.add(s); // v vektörünün sonuna yeni s bileşenini ekler

deyimi yazılır.

Vector’ün Öğelerini Listeleme

Bir vektörün bütün bileşenlerini listelemek için, elbette for döngüsü kullanılabilir. Ama vektör sınıfı daha kolay bir yöntem sunar:

ListIterator

Aşağıdaki kod parçası ListIteratörün kullanılışını göstermektedir.

ListIterator iter = v.listIterator();

while (iter.hasNext()) {

    System.out.println((String)iter.next());

}

Vector Sınıfının Metotları

Aşağıdaki tabloda v bir vektör, o bir nesne (object), i ise int tipinden bir damgadır (index).

Metot

Açıklama

v.add(o)

v   vektörüne o nesnesini ekler

v.add(i, o)

i  damgalı bileşeni bir sonraya iter, araya o nesnesini yerleştirir

v.clear()

v  vektörünün bütün bileşenlerini siler

v.contains(o)

v  vektörü  o nesnesini içeriyorsa  true, değilse false değerini alır

v.firstElement(i)

v  vektörünün ilk bileşenini verir

v.get(i)

v  vektörünün  i-damgalı bileşenini verir

v.lastElement(i)

v  vektörünün son bileşenini verir

v.listIterator()

v  vektörünün bütün bileşenleri üzerinde sırayla geçer (döngü yapar)

v.remove(i)

v  vektörünün i-damgalı bileşenini siler

v.set(i,o)

v  vektörünün i-damgasını  o objesine takar

v.size()

v  vektörünün bileşen sayısını (uzunluğunu) verir

v.toArray(Object[])

v  vektörünü nesne arrayine dönüştürür

 

Örnekler

Aşağıdaki örnek, boş bir vektör nesnesi yaratıyor, 0-ıncı damgadan başlayıp 4-üncü damgaya kadar bileşenlerine beş tane  String  ekliyor. Sonra 3-damgalı bileşene yeni bir String yerleştiriyor (araya giriyor). Bu işlem 3 ve 4 numaralı bileşenleri birer damga yukarıya kaydırıyor. Dolayısıyla vektörün bileşen sayısı 6 oluyor.

Vector01.java

import java.util.Vector;

 

public class Vector01 {

 

    public static void main(String[] args) {

    

        Vector<String> v = new Vector<String>();

/*

 * Bu kurucu String tipinden boş bir vektör yarattı

  * <E> vektörün öğe tipidir, burada String

      * String, Integer, Object gibi bir nesne olabilir

 

  * vektörün sonuna öğe ekleme

      * vektörün bileşen damgaları 0 dan başlar

 */

        v.add("Vector Object 0"); 

        v.add("Vector Object 1");

        v.add("Vector Object 2");

        v.add("Vector Object 3");

        v.add("Vector Object 4");

 

 // indeksi belirli yere öğe yerleştir (araya gir)

 

        v.add(3, "Damgası 3 olan bileşene girilen öğe");

 

 // v.size() vektörün bileşen sayısını verir

 

        System.out.println("Vektörün uzunluğu :"+v.size());

 

 // Vektörün öğelerini listeler

 

        for(int i=0; i < v.size(); i++)

        {

            System.out.println("Vektör öğesi : "+i+" :"+v.get(i));

        }

    }

}

 

 

Çıktı

Vektörün uzunluğu :6

Vektör öğesi : 0 :Vector Object 0

Vektör öğesi : 1 :Vector Object 1

Vektör öğesi : 2 :Vector Object 2

Vektör öğesi : 3 :Damgası 3 olan bileşene girilen öğe

Vektör öğesi : 4 :Vector Object 3

Vektör öğesi : 5 :Vector Object 4

 

 

Aşağıdaki örnek vektör metotlarının kullanılışını göstermektedir.

VectorDemo.java

import java.util.*;

public class VectorDemo {

  public static void main(String[] args){

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

    int primitiveType = 100;

    Integer wrapperType = new Integer(200);

    String str = "Başkent Ankara";

    vector.add(primitiveType);

    vector.add(wrapperType);

    vector.add(str);

    vector.add(2, new Integer(300));

    System.out.println("vektörün öğeleri  : " + vector);

    System.out.println("vektörün uzunluğu : " + vector.size());

    System.out.println("vektörün 2 numaralı bileşeni  : " + vector.elementAt(2));

    System.out.println("vektörün ilk öğesi            : " + vector.firstElement());

    System.out.println("vektörün son öğesi            : " + vector.lastElement());

    vector.removeElementAt(2);

    Enumeration e=vector.elements();

    System.out.println("vektörün öğeleri   : " + vector);

    while(e.hasMoreElements()){

      System.out.println("öğeler           : " + e.nextElement());

    } 

  }

}

 

Çıktı

vektörün öğeleri  : [100, 200, 300, Başkent Ankara]

vektörün uzunluğu : 4

vektörün 2 numaralı bileşeni  : 300

vektörün ilk öğesi            : 100

vektörün son öğesi            : Başkent Ankara

vektörün öğeleri   : [100, 200, Başkent Ankara]

öğeler           : 100

öğeler           : 200

öğeler           : Başkent Ankara