Java ArrayList Kullanarak Basit Bir Rehber Uygulaması

Merhaba, bu yazımda Java ArrayListler'e basit ama güzel bir örnek vereceğim.

Bilindiği gibi ArrayList'lerin diğer Array'lere göre en bariz farkı boyutunun sabit olmamasıdır. Hali hazırda birçok metot ile gelmesi de bizim için bir ayrı bir güzellik.

Bu yazıda console tabanlı basit bir Telefon Rehberi uygulaması yazacağız. Pekişmesi için güzel bir örnek.

Üç adet sınıfımız olacak. Bunlar:

Main.java

Contact.java

ContactManager.java

 

İlk olarak Contact.java sınıfı ile başlayalım. Basit bir sınıf olacak. Temel değişkenler, constructor, getter ve setter metotları ile override ettiğimiz toString() metodu bulunacak. Evet hepsi bu kadar.

public class Contact {

    private String name;
    private String number;

    public Contact(String name, String number) {
        this.name = name;
        this.number = number;
    }

    public Contact(Contact source) {
        this.name = source.name;
        this.number = source.number;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getNumber() {
        return this.number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    @Override
    public String toString() {
        String txt = "\nAdi: " + this.name + ", numarasi: " + this.number;
        return txt;
    }
}

 

Şimdi de ContactManager.java sınıfımızı yazalım. Asıl işlemler burada olacak. 

Tipi Contact olan bir ArrayList tanımlıyoruz. Ardından constructor içinde ArrayList'imizi oluşturuyoruz.

Ayrıntılar kod üzerinde yorum satırı olarak belirtilmiştir. 

import java.util.ArrayList;

public class ContactManager {

    // Tipi Contact olan bir ArrayList değişkeni tanımlıyoruz.
    private ArrayList<Contact> contacts;

    public ContactManager() {
        // Constructor içinde ArrayList imizi oluşturuyoruz.
        contacts = new ArrayList<Contact>();
    }

    // Kişi görüntüleme işlemi
    public void getContact(String name) {

        // ArrayList boş ise hata döndürelim.
        if (contacts.isEmpty()) {
            System.out.println("Rehberinizde kayıtlı kişi bulunmuyor !!");
        } else {

            boolean varmi = false;
            // Foreach döngüsü ile gönderilen name değerine göre kişi var mı yok mu kontrol
            // edelim.
            // Kişi var ise override ettiğimiz toString() metodu ile ekrana yazdıralım.
            for (var item : contacts) {
                if (item.getName().equals(name)) {
                    System.out.println(item.toString());
                    varmi = true;
                    break;
                }
            }

            // Kişi yok ise bilgilendirelim.
            if (!varmi) {
                System.out.println("Rehberinizde bu isimde kayıtlı bir kişi bulunmuyor :(");
            }

        }
    }

    // Rehbere ekleme islemi
    public void addContact(Contact contact) {
        // add metodu ile kişiyi ekleyelim.
        contacts.add(new Contact(contact));
        System.out.println("\n Yeni kişi basariyla eklendi. \n");
    }

    // Rehberi guncelleme islemi
    public void updateContact(int index, Contact contact) {
        // Girilen index değerine göre kaydı güncelleyelim.
        contacts.set(index - 1, new Contact(contact));
    }

    // Rehberden silme islemi
    public void removeContact(int index) {
        // ArrayList boş ise hata döndürelim.
        if (contacts.isEmpty()) {
            System.out.println("Rehberinizde kayıtlı kişi bulunmuyor !!");
        }

        else if (index < 1) {
            System.out.println("Lütfen 0'dan büyük bir sayı giriniz..");
        }

        else {
            // remove metodu ile kişiyi silelim.
            contacts.remove(index - 1);
        }
    }

    // Rehberi listeleme islemi
    public void listContacts() {
        // ArrayList boş ise hata döndürelim.
        if (contacts.isEmpty()) {
            System.out.println("\n\n Rehberinizde kayıtlı kişi bulunmuyor !!");
        } else {
            // For döngüsü ile rehberi yazdıralım.
            for (int i = 0; i < contacts.size(); i++) {
                System.out.println("\n" + (i + 1) + ". " + contacts.get(i).getName() + ", Numara: "
                        + contacts.get(i).getNumber());
            }
        }

    }

    // Rehberi temizleme islemi
    public void cleanContactList() {
        // ArrayList boş ise hata döndürelim.
        if (contacts.isEmpty()) {
            System.out.println("\n\n****** Rehberinizde kişi bulunmuyor !!! ******");
        } else {
            // clear() metodu ile ArrayList imizi temizleyelim.
            contacts.clear();
            System.out.println("\n\n****** Rehberinizde temizlendi !!! ******");

        }

    }

}

 

Gelelim Main.java sınıfımıza. 

İlk olarak, metotların içinde de aynı değeri kullanabilmek için static olarak ContactManager nesnemizi oluşturuyoruz.

Bir while döngüsü yardımı ile kullanıcıdan komut girmesini bekliyoruz.

 

import java.util.Scanner;

class Main {

    static ContactManager contactManager = new ContactManager();

    public static void main(String[] args) {

        System.out.println("\n ----- JAVA ILE TELOFON REHBERI UYGULAMASI ----- \n");

        Scanner scanner = new Scanner(System.in);

        while (true) {

            System.out.println(
                    "\n Kişi eklemek için e,\n Kişi silmek için s,\n Rehberi görmek için l, " +
                    "\n Güncellemek için g ,\n Rehberi temizlemek için t, \n Kişiyi görüntülemek için p," +
                    "\n Çıkış için q tuşuna basınız..");

            String input = scanner.nextLine();

            if (input.equals("q")) {
                System.out.println("\nSistemden çıkılıyor...");
                System.exit(0);
                break;
            }

            ManageContacts(input);

        }

        scanner.close();

    }

    public static void ManageContacts(String input) {

        Scanner scanner = new Scanner(System.in);

        if (input.equals("e")) {
            System.out.println("\nLütfen kişi adı giriniz: ");
            String name = scanner.nextLine();

            System.out.println("\nLütfen kişinin numarasını giriniz: ");
            String number = scanner.nextLine();

            contactManager.addContact(new Contact(name, number));
        }

        else if (input.equals("s")) {
            System.out.println("\nLütfen silmek istediğiniz kişinin sırasını yazınız: ");
            int index = scanner.nextInt();
            scanner.nextLine();
            contactManager.removeContact(index);

        } else if (input.equals("l")) {
            contactManager.listContacts();
        }

        else if (input.equals("t")) {
            contactManager.cleanContactList();
        }

        else if (input.equals("p")) {

            System.out.println("\nLütfen  yeni kişi adını giriniz: ");
            String name = scanner.nextLine();
            contactManager.getContact(name);

        }

        else if (input.equals("g")) {
            System.out.println("\nLütfen güncellemek istediğiniz kişinin indeks numarasını giriniz: ");
            int index = scanner.nextInt();

            scanner.nextLine();

            System.out.println("\nLütfen  yeni kişi adını giriniz: ");
            String name = scanner.nextLine();

            System.out.println("\nLütfen yeni kişinin numarasını giriniz: ");
            String number = scanner.nextLine();

            contactManager.updateContact(index, new Contact(name, number));
        }

    }
}

 

Burada önemli olan diğer nokta, Main static metodunun içinden başka bir metot çağırmak istiyorsak bu metot da static olmak zorunda olması. 

Kullanıcının girdiği tüm değerlere göre ekleme, çıkarma, silme, listeleme, görüntüleme ve rehberi silme işlemlerini yapıyoruz. 

ManageContacts() static metodunun içinden de ilgili parametreleri alıp contactManager nesnesi üzerinden tüm işlemleri gerçekleştiriyoruz.

Kodların tümüne github üzerinden erişmek için tıklayın.

Evet, hepsi bu kadar..

 

 

 

970 Görüntülenme

Yorum Yap