arraylist etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
arraylist etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

6 Ocak 2019 Pazar

Vector vs Arraylist

   Array’in uzunluğu array tanımında belirleniyor ve bu uzunluk daha sonra değiştiririlemiyordu. Bu sorunun çözümü için Vector ve ArrayList sınıfları geliştirildi. ArrayList ve Vector, List interface’ini implement eder.

   ArrayList ve Vector arasındaki farklar:

1-Senkronizasyon

   Vector  synchronized, ArrayList synchronized değildir. Yani aynı anda sadece bir thread Vector’e ulaşırken, ArrayList’e birden fazla thread ulaşabilir.Örneğin bir thread ekleme işlemi yaparken diğer thread aynı listeye erişip çıkarma işlemini gerçekleştirebilir.



2-Performans

   Vector synchronized olduğu için (thread-safe) Arraylist’e göre daha hızlıdır.

3- Kapasite

   Arraylist ve Vector’lerin boyutu arttırılıp azaltılabilir fakat aralarında bir fark vardır. ArrayList bu artışı size’ına göre %50 arttırırken, Vector %100 arttırım gerçekleştirir.



7 Ekim 2010 Perşembe

Collections ( Java'da Koleksiyonlar )

Bazı durumlarda dizi içinde tutacağımız elemanın sayısı ve tipi çalışma anında belirli hale gelebilir. Bu tip durumlarda koleksiyon sınıfları kullanılmaktadır.
Set:
TreeSet: Elemanlar red-black tree yapısında, değerlerine göre sıralı tutulur.
HashSet: Elemanlar bir hash tablosunda tutulur.
LinkedHashSet: Hash tablosunu linked list şeklinde tutar.

Biz HashSet'i küçük bir programla örneklendirelim.
import java.util.HashSet;
import java.util.Set;

public class SetExample {
public static void main(String[] args) {
String[] elemanlar = { "Java", "is", "Java", "language", "programming","is" };
Set< string > kume = new HashSet< string >();
for (String el : elemanlar){
if (!kume.add(el)) {
System.out.println("eleman iki kez giriliyor:" + el);
}
}
System.out.println(kume.size()+" farkli eleman eklendi"); 
}
}

Programın çıktısı aşağıdaki gibidir.





List:
ArrayList: Elemanlar eklendikçe kapasitesi artan dizi şeklinde tutulur.
Linked List: Elemanlar bağlı liste şeklinde tutulur.

ArrayList'e bir örnek verecek olursak;

import java.util.ArrayList;
public class ArrayListOrnek {
public static void main(String[] args) {
String[] lis = {"A","B","C","C","D","E","F","G"};
ArrayList< string > liste = new ArrayList< string >();
for (String s : lis) {
liste.add(s);
}
System.out.println(liste);
}
}

Programın çıktısı aşağıdaki gibidir.





Queue:
FIFO(First in First out) yapısındadır. Yani ilk giren ilk çıkar.

Kuyruğu(queue) bir programla örneklendirecek olursak;
import java.util.PriorityQueue;
import java.util.Queue;

public class QueueOrnek {
public static void main(String[] args) {
Queue< integer > kuyruk = new PriorityQueue< integer >();
kuyruk.add(new Integer(1));
kuyruk.add(new Integer(2));
kuyruk.add(new Integer(3));
kuyruk.add(new Integer(4));

System.out.println(kuyruk.poll()); 
System.out.println(kuyruk.poll());
System.out.println(kuyruk.poll());
System.out.println("Size="+kuyruk.size()); 
}
}
Programın çıktısı aşağıdaki gibidir.



Map:
Tree Map: Anahtar-değer ikilisini red black tree yapısında tutar.
HashMap: Elemanları hashtable yapısında tutar.
LinkedHashMap: Anahtar-değer ikilisini linked list yapısında
tutar.

HashMap yapısıyla ilgili bir program örneği gösterelim.
import java.util.HashMap;
import java.util.Map;

public class MapOrnek {
public static void main(String[] args) {
String[] kelimeler = {"İstanbul","İstanbul","Ankara",
"Çanakkale","İzmir","Java","İzmir","Java","İstanbul"};
Map< string, integer="" > m = new HashMap< string, integer="" >();
for (String kelime : kelimeler) {
Integer sayi = m.get(kelime);
m.put(kelime, (sayi==null)?1:sayi+1);
}
System.out.println(m.size()+" farkli kelime");
System.out.println(m); 
}
}


Programın çıktısı aşağıdaki gibidir.