23 Ağustos 2012 Perşembe

Google’ın Autocomplete Algoritması ve JSuggestField Bileşeni


Google arama motorunda herhangi bir konuda arama yaparken bize tavsiyeler sunması autocomplete algoritması sayesindedir. Bu algoritma belki de son zamanların en güzel algoritmalarından birisidir.


İşte bu işi yapan Java da bir class vardır. Bu classı kullanmak için  buradan jar dosyasını indirmek gerekiyor.  Daha sonra bu jar dosyasını projemize eklememiz gerekiyor.

                                               
Burada kullanacağımız sınıf JSuggestField classıdır. Onunda kullanımı için aşağıda ki kodlara bir göz atabilirsiniz.
package suggestionjava;

import ch.rakudave.suggest.JSuggestField;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.util.Vector;
import javax.swing.JFrame;

public class SuggestionJava {
    public static void main(String[] args) {
        Vector<String> v=new Vector<>();
        Dimension d=new Dimension(60,20);
        JFrame f=new JFrame();
        v.add("Mesut");
        v.add("Emre");
        v.add("Emirhan");
        v.add("Hüsamettin");
        v.add("İlker");
        v.add("Muhammed");
        JSuggestField sg =new JSuggestField(f);
        sg.setSuggestData(v);
        sg.setPreferredSize(d);
        f.setVisible(true);
        f.setLocationRelativeTo(null);
        f.setSize(200, 100);
        f.setLayout(new FlowLayout());
        f.add(sg);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);       
    }
}
Bu classın constructoru gereği içine bir frame ve bir Vector atabiliriz. Ya da sadece Frame de alabiliriz. Biz yalnızca Frame nesnesi alıp daha sonra setSuggestData() metodu ile Vector nesnesi ekledik. Program çalışında karşımıza bir textField gelecek. Netekim bu class JTextField classında türetilmiştir. Pencere ki textField’in en ve boy uzunluğunu ayarlamak için Dimension nesnesinden yararlanılır.  Bu nesne 11. Satırda tanımlanmıştır.
Vector nesnesine gördüğünüz gibi veri ekledik. Daha önceki yazılarımda bu classdan bahsetmiştim. Dinamik bir dizi gibi düşünebiliriz. add() metodu ile bu dinamik diziye eleman ekleyebiliriz. Bu elemanların String nesnesi olması şarttır. Programın görüntüsü aşağıda ki gibidir.

                                                                       

21 Ağustos 2012 Salı

MULTITHREADING


Birçok programlama dili aynı anda hangi işlemlerin yapılacağını programcıya bırakmaz. Fakat bunu düzenlemek için işlemlerin yapılma sırasını yani önce hangisinin sonra hangisinin yapılacağını programcıya bırakır.
Java dili programcılarına bu kolaylığı sağladı. Programcı yazdığı uygulamada iş bölümlemesi yapabilecekti.Multithreading uygulamaların performanslarını ciddi bir biçimde etkileyerek artış sağlar.Şimdi bu konuyu bir örnek üzerinde inceleyelim.

package multithreading;

public class threadyazdir extends Thread{
   
    private int beklemesuresi;

    public threadyazdir(String ad) {
        super(ad);
        beklemesuresi=(int)(Math.random()*6001);//6 saniye
    }

    @Override
    public void run() {
        try {
            System.err.println(getName()+" "+beklemesuresi+" kadar bekleyecek.");
            Thread.sleep(beklemesuresi);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Threadlere isim vererek istediğimizi istediğimiz zaman başlatabiliriz. Başlatmak için start() metodunu kullanmak yeterlidir.

20 Temmuz 2012 Cuma

Javada ArrayList Sınıfı


Şimdi nesneleri bellekte tutmak için kullanışlı ve bir o kadar da yararlı olan ArrayList sınıfından bahsedeceğiz. Nesneleri bir dizi yardımıyla da tutabiliriz. Fakat bu dizinin boyutunu değiştiremeyiz. Java bizlere bu sınıfı kullanarak dinamik bir bellek kullanımı ve aynı zamanda limitsiz bir nesne tutmamızı sağlar. Bu sınıfın belli başlı metodları aşağıda ki gibidir.
ArrayList()                                                                 Boş bir liste oluşturur.
Add(o):void                                                                o elemanını listeye  ekler
Add(index:int,o):void                                                   listenin belirtilen indexine o elemanını ekler.
Clear():void                                                                Tüm listeyi siler.
Contains(o:Object) :boolean                                        o elemanının listede olup olmadığına bakar.
Get(index:int)                                                              belirtilen indexde ki elemanı getirir.
indexOf(o:Object):int                                                  Belirtilen nesnenin indexini döner.
isEmpty():boolean                                                       Listenin boş olup olmadığını kontrol eder.
Remove(o:Object):boolean                                         belirtilen  elemanı listeden  kaldırır.

Bilindiği üzere ArrayList generic bir sınıftır. Kullanım şekli aşağıda ki gibidir.
ArrayList<data type> isim=new ArrayList<data type>();
Şeklindedir.
Aşağıda ki kodlara bir göz atabilirsiniz.
package arrarylistkullanimi;
import java.util.ArrayList;
public class ArraryListKullanimi {
    public static void main(String[] args) {
        ArrayList<String> arr=new ArrayList<String>();
        arr.add("Mesut Emre");
        arr.add("İsmail Enver");
        arr.add("Melikşah");
        arr.add("Mert");       
        if(arr.isEmpty())
        {
            System.err.println("Listede henüz eleman yoktur");
        }
        else
        {
            for (int i = 0; i < arr.size(); i++) {
                System.out.println(arr.get(i));
            }
        }       
        if (arr.contains("Mesut Emre")) {
            System.out.println("Şahıs listede vardır.");
        }
        else
        {
            System.err.println("Şahıs listede yoktur.");
        }     
        arr.remove("Mert");       
        for (int i = 0; i < arr.size(); i++) {
            System.out.println(arr.get(i));
        }       
        arr.clear();       
        if (arr.isEmpty()) {
            System.err.println("Liste eleman yoktur.");
        }
        else
        {
            System.out.println("Listede eleman vardır.");
        }
    }
}

Kodların çıktısı aşağıda ki gibidir.