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.

Arrays in Java ( Java'da Diziler )

Diziler aynı tipte var olan değişkenleri tutmamıza yarayan veri yapılarıdır. Javada diziler birer nesnedir.

double[] dizi; veya
double dizi[];

dediğimiz zaman, double tipinde dizi isminde bir dizi tanımlamış oluruz.

double [] dizi=new double[10]; veya
double dizi[]=new double[10];

dizimizi 10 elemanlı bir şekilde oluşturduğumuzu gösterir.

Dizileri "var olan diziyi sıralı hale getiren" bir programla örneklendirelim.

public class DiziSira {
public static void main(String[] args)
{
int dizi[]=new int[5];
dizi[0] = 5;
dizi[1] = 8;
dizi[2] = 3;
dizi[3] = 6;
dizi[4] = 4;
for(int i=0;i<5;i++)
{
for(int j=i+1;j<5;j++)
{
if(dizi[i]>dizi[j])
{
int temp=dizi[j];
dizi[j]=dizi[i];
dizi[i]=temp;
}
}    
}
for(int i=0;i<5;i++)
System.out.println(dizi[i]+"");
}
}
Tabi bu örneğimizi Java'nın geniş kütüphanesinden yararlanarak Java'ya da yaptırabiliriz.
Arrays.sort algoritma kurmadan bu işlemi kolaylıkla yapacaktır.
Yine örneklendirecek olursak kodumuz aşağıdaki gibi olacaktır.
import java.util.*;
public class DiziSiralama {
public static void main(String args[]) {
double dizi[] = new double[5] ;
dizi[0] = 8.26 ;
dizi[1] = 2.57 ;
dizi[2] = 4.62 ;
dizi[3] = 1.24 ;
dizi[4] = 13.29 ;
Arrays.sort( dizi ) ;
System.out.println("Sirali:");
for (int i = 0 ; i < dizi.length ; i++) {
System.out.println("dizi["+i+"] = " + dizi[i]);
}
}
}

Java'ya Başlarken


Java, işletim sisteminden bağımsız olarak tasarlanmış bir platformdur.

Java platformu da modern nesneye yönelik diller gibi (.Net platformu) geniş bir sınıf kütüphanesine sahiptir.
Eiffel,Smalltalk, Objective C ve Mesa dilleri temel alınarak JAVA dili geliştirilmiştir. Java'nın ilk adı Oak'tır.James Gosling tarafından geliştirilmiş ve 1991‘ de Java olarak Sun Microsystems tarafından duyurulmuştur.
Java uygulamasının çalışması için doğrudan işletim sistemi kullanılmaz. Bu yüzden JVM ye ihtiyaç duyulur. Java uygulamaları JVM (Java Virtual Machine) tarafından yorumlanır. JVM,işletim sisteminin en üstünde bulunur.

Java platformunu Windows işletim sistemi üzerine kurmak ve uygulamaları yazabilir hale gelmek için öncelikle Java Development Kit'i (JDK) bilgisayarınıza kurmalısınız.
Java'nın yaşam döngüsü resimdeki gibidir.





Ekrana hello world yazdırmamış kişi bizden değildir diyerek ilk programımızı bu efsanevi kalıpla açalım.
public class IlkProgram{
public static void main(String args[])
{
System.out.println("Hello world");
}
}