java.util
Class Vector
|
+--java.util.AbstractCollection
|
|
+--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 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