blog posts

Arraylist'i Java'da

Arraylist’i Java’da basit bir dilde öğretmek

Java’daki ArrayList, Java Koleksiyon çerçevesinin parçası olan bir sınıftır. Bu sınıf Java.util paketine aittir ve dinamik dizi benzeri işlevsellik sağlar. Bu dizi türü standart dizilere göre daha yavaş olsa da ArrayList, dizinin sık sık değiştirilmesi gereken senaryolarda kullanışlıdır. Yazılı dergiden aldığımız bu makalede, Java’daki ArrayList hakkında kapsamlı açıklamalar yapmayı amaçlıyoruz. Öyleyse bize katılın.

ArrayList’in Java’daki tanımı nedir?

ArrayList, Liste arayüzü kullanılarak uygulanır ve normal dizilerde bulunmayan birçok özellik sağlar. Bir listedeki öğeleri ekleme, kaldırma ve değiştirmenin yanı sıra öğeler üzerinde arama, sıralama ve yineleme gibi işlemleri gerçekleştirme yöntemleri sağlar. ArrayList’in dinamik doğası, öğeler eklendikçe veya kaldırıldığında otomatik olarak yeniden boyutlandırılmasına olanak tanır.

Genel olarak Java ArrayList, dinamik yeniden boyutlandırma ve manipülasyon için çok çeşitli kullanışlı yöntemler sağlayarak dizilerle çalışmayı kolaylaştıran çok yönlü ve güçlü bir sınıftır. Aşağıdaki resimde bu dizi sınıfının nasıl çalıştığı gösterilmektedir:

 

ArrayList sınıfını kullanarak Java’da yeniden boyutlandırılabilir diziler oluşturabilirsiniz. Geleneksel dizilerden farklı olarak bildirim sırasında ArrayList’in boyutunu belirtmeye gerek yoktur.

Java’da ArrayList örneği

ArrayList’in daha iyi anlaşılması için aşağıda bir örnek verilmiştir:

// Java program to demonstrate the
// working of ArrayList
import java.io.*;
import java.util.*;

class ArrayListExample {
	public static void main(String[] args)
	{
		// Size of the
		// ArrayList
		int n = 5;

		// Declaring the ArrayList with
		// initial size n
		ArrayList<integer> arr1 = new ArrayList<integer>(n);

		// Declaring the ArrayList
		ArrayList<integer> arr2 = new ArrayList<integer>();

		// Printing the ArrayList
		System.out.println("Array 1:" + arr1);
		System.out.println("Array 2:" + arr2);

		// Appending new elements at
		// the end of the list
		for (int i = 1; i
				</integer></integer></integer></integer>

Yukarıdaki kodun çıktısı aşağıdaki gibidir:

Bu örnekte Java’da iki ArrayList nesnesi oluşturuyoruz: arr1 ve arr2. Başlangıçta arr1, 5 başlangıç ​​kapasitesiyle başlatılırken, arr2 boş bir ArrayList’tir. Bundan sonra sayıları 1’den 5’e kaydırıyoruz ve add() yöntemini kullanarak sayıları her iki ArrayList’e ekliyoruz. Son olarak, her iki ArrayList’in içeriğini eleman eklemeden önce ve sonra yazdırıyoruz. Gördüğünüz gibi ArrayList, eklenen öğelere uyum sağlamak için kendisini otomatik olarak yeniden boyutlandıracaktır. Başlangıçta her iki ArrayList de boştur, ancak öğeler eklendikten sonra sırasıyla 1’den 5’e kadar sayıları içerirler.

ArrayList özellikleri

ArrayList’in Java’daki önemli özellikleri şunlardır:

  1. Kalıtım ve arayüz uygulaması: ArrayList, AbstractList sınıfını devralır ve List arayüzünü uygular. Bu, ortak liste işlemlerine ve yöntemlerine erişmesine olanak tanır.
  2. Dinamik Yeniden Boyutlandırma: Dizilerden farklı olarak ArrayList’in boyutu sabit değildir. Koleksiyon büyürse otomatik olarak boyutunu artırır, koleksiyondan öğeler kaldırılırsa küçültür. Bu dinamik yeniden boyutlandırma, farklı miktarlardaki verilerle çalışmayı kolaylaştırır.
  3. Rastgele erişim: ArrayList, öğelere rastgele erişime izin verir. Bu, öğelere dizin konumları kullanılarak doğrudan erişilebileceği anlamına gelir.
  4. Sarmalayıcı sınıfları: ArrayList “int”, “char” vb. gibi ilkel türleri doğrudan depolayamaz. Bu gibi durumlar için sarmalayıcı sınıflara ihtiyaç duyar. Örneğin ArrayList’te öğe türü olarak “int” kullanmak yerine “Integer” kullanılır.
  5. Senkronizasyon: ArrayList varsayılan olarak senkronize edilmez, bu da iş parçacığı açısından güvenli olmadığı anlamına gelir. Dize açısından güvenli davranış gerekiyorsa, ArrayList’e alternatif olarak Vector asenkron sınıfı kullanılabilir.

Aşağıdaki görselden ArrayList’in en önemli özelliklerini anlayabilirsiniz:

Özetle, resimde listelenen sınıflar Liste arayüzünü belirli işlevlerle uygular:

  • AbstractList: Değişmez listelerin uygulanması için bir temel sağlar. Alt sınıflar yalnızca get() ve size() yöntemlerini uygulamalıdır.
  • CopyOnWriteArrayList: Bu sınıf ArrayList’in güvenli bir çeşididir. Değişiklikler, temel dizinin yeni bir kopyası oluşturularak eş zamanlı değişiklik yapılması sağlanarak yapılır.
  • AbstractSequentialList: Bu sınıf, AbstractList’i genişletir ve değişmez sıralı erişim listeleri için bir iskelet uygulaması sağlar. Alt sınıflar yalnızca get() ve size() yöntemlerini uygulamalıdır.

Bu sınıflar, değişmez listelerin uygulanması, iş parçacığı açısından güvenli değişiklikler sağlanması ve değişmez sıralı erişim listelerinin desteklenmesi gibi çeşitli amaçlara hizmet eder.

ArrayList’teki yapıcılar

ArrayList veya Java arraylist yapıcısındaki yapıcılar, ArrayList sınıfının farklı başlatma seçeneklerine sahip örneklerini oluşturmak için kullanılır. ArrayList sınıfında mevcut olan yapıcılar şunlardır:

1. Dizi Listesi

Bu yapıcı, başlangıç ​​öğeleri olmayan boş bir ArrayList oluşturur. Aşağıdaki şekilde kullanılabilir:

ArrayList<object> arr = new ArrayList();</object>

2. ArrayList(Koleksiyon c)

Bu yapıcı, Java’da belirtilen c dizisinin öğeleriyle bir ArrayList oluşturur. Aşağıdaki şekilde kullanılabilir:

Collection<object> collection = new ArrayList();
// Add elements to the collection
ArrayList<object> arr = new ArrayList(collection);
</object></object>

3. ArrayList(int kapasite)

Bu yapıcı, belirtilen başlangıç ​​kapasitesine sahip bir ArrayList oluşturur. kapasite, ArrayList’in yeniden boyutlandırmadan önce tutabileceği öğe sayısını belirtir. Aşağıdaki şekilde kullanılabilir:

int initialCapacity = 10;
ArrayList<object> arr = new ArrayList(initialCapacity);
</object>

Bu yapıcılar, farklı ihtiyaçlara göre ArrayList nesnelerinin oluşturulmasında esneklik sağlar. Bir dizinin öğeleriyle boş bir ArrayList oluşturulabilir ve başlatılabilir veya verimli bellek tahsisi için başlangıç ​​kapasitesi tahsis edilebilir.

Java’da ArrayList yöntemleri

Aşağıda Java’daki bazı ArrayList yöntemleri listelenmiştir:

  1. add(int index, Object element): Belirtilen öğeyi listede belirtilen konuma ekler.
  2. add(Object o): Belirtilen öğeyi listenin sonuna ekler.
  3. addAll(Collection C): Belirtilen koleksiyondaki tüm öğeleri listenin sonuna ekler.
  4. addAll(int index, Collection C): Belirtilen koleksiyondaki tüm öğeleri, belirtilen dizinden başlayarak listeye ekler.
  5. clear(): Listedeki tüm öğeleri siler.
  6. clone(): ArrayList’in yüzeysel bir kopyasını döndürür.
  7. include(Object o): Listenin belirtilen öğeyi içerip içermediğini kontrol eder.
  8. sureCapacity(int minCapacity): Gerekirse ArrayList’in kapasitesini artırır.
  9. forEach(Consumer<? super E> action): Listenin her elemanı için verilen eylemi gerçekleştirir.
  10. get(int index): Listede belirtilen konumdaki öğeyi döndürür.
  11. indexOf(Object o): Belirtilen öğenin ilk oluşumunun dizinini veya bulunamazsa -1’i döndürür.
  12. isEmpty(): Listenin boş olup olmadığını kontrol eder.
  13. lastIndexOf(Object o): Belirtilen öğenin son oluşumunun dizinini veya bulunamazsa -1’i döndürür.
  14. listIterator(): Listedeki öğeler üzerinde bir liste yineleyicisi döndürür.
  15. listIterator(int index): Belirtilen konumdan başlayarak listedeki öğeler üzerinde bir liste yineleyicisi döndürür.
  16. Remove(int index): Belirtilen konumdaki öğeyi listeden kaldırır.
  17. kaldır(Object o): Belirtilen öğenin varsa ilk oluşumunu listeden kaldırır.
  18. RemoveAll(Collection c): Belirtilen koleksiyondaki tüm öğeleri listeden kaldırır.
  19. RemoveIf(Predicate filter): Verilen yüklemi karşılayan tüm öğeleri listeden kaldırır.
  20. RemoveRange(int fromIndex, int toIndex): Listeden bir dizi öğeyi kaldırır.
  21. keepAll(Collection<?> c): Yalnızca belirtilen koleksiyonda yer alan listedeki öğeleri korur.
  22. set(int index, E element): Listede belirtilen konumdaki öğeyi belirtilen öğeyle değiştirir.
  23. size(): Listedeki öğe sayısını döndürür.
  24. spliterator(): Listedeki öğeler üzerinde bir Spliterator oluşturur.
  25. subList(int fromIndex, int toIndex): Belirtilen fromIndex (dahil) ve toIndex (hariç) dizin arasındaki listenin bölümünün görünümünü döndürür.
  26. toArray(): Listedeki tüm öğeleri içeren bir dizi döndürür.
  27. toArray(Object[] O): Listedeki tüm öğeleri aynı sırayla içeren bir dizi döndürür.
  28. trimToSize(): ArrayList’in kapasitesini listenin geçerli boyutuna düşürür.

Bu yöntemler, bir ArrayList’teki öğelerin işlenmesi ve bunlara erişilmesi için çeşitli işlemler sağlar.

ArrayList’in Java’daki uygulamaları

ArrayList’in Java’daki en önemli kullanımları arasında aşağıdakilerden bahsedilebilir:

  • Öğe ekle
  • Öğeleri değiştir
  • Öğeleri kaldır
  • Gezinme öğeleri
  • Öğeleri al
  • Öğeleri sırala
  • ArrayList’in boyutunu alın

Aşağıda Java’da arraylist ile çalışma örneği (java arraylist örneği) verilecektir.

ArrayList ile eleman ekleme

Java’da bir ArrayList’e öğe eklemek için add() yöntemini kullanabilirsiniz. add() yöntemi, sağlanan parametrelere bağlı olarak çeşitli işlemleri gerçekleştirebilir. Bu yöntemi kullanmanın iki farklı yaklaşımı vardır:

1- add(Object element): Bu yöntem ArrayList’in sonuna eleman eklemek için kullanılır. Aşağıdaki örnekte olduğu gibi:

ArrayList<string> list = new ArrayList();
list.add("apple");
list.add("banana");
list.add("orange");
</string>

Yukarıdaki örnekte elemanın adı listenin sonuna eklenmiştir.

2- add(int index, Object element):  Bu yöntem ArrayList’te belirli bir indekse eleman eklemek için kullanılır. Mevcut öğeler yeni öğeyle eşleşecek şekilde taşınacak. Aşağıdaki örnek bu kavramı göstermektedir:

ArrayList<integer> numbers = new ArrayList();
numbers.add(0, 10);
numbers.add(1, 20);
numbers.add(2, 30);
</integer>

Yukarıdaki örnekte 10, 20 ve 30 numaralı öğeler ArrayList sayılarına belirli indekslerde eklenmiştir. Ortaya çıkan ArrayList [10, 20, 30] olacaktır. Bu add() yöntemlerini kullanarak ArrayList’teki öğeleri istediğiniz konuma kolayca ekleyebilirsiniz.

ArrayList ile elemanları değiştirme

Java’da ArrayList’teki öğeleri değiştirmek için set() yöntemini kullanabilirsiniz. set() yöntemi bir dizin alır ve bu dizine eklenecek güncellenmiş öğeyi alır. Aşağıdaki örnek bu kavramı göstermektedir:

import java.util.*;

// main class
class GFG {

	// Main driver method
	public static void main(String args[])
	{
		// Creating an Arraylist object of string type
		ArrayList<string> al = new ArrayList();

		// Adding elements to Arraylist
		// Custom input elements
		al.add("welcome");
		al.add("Maktabkhooneh");

		// Adding specifying the index to be added
		al.add(1, "to");

		// Printing the Arraylist elements
		System.out.println("Initial ArrayList " + al);

		// Setting element at 1st index
		al.set(1, "to");

		// Printing the updated Arraylist
		System.out.println("Updated ArrayList " + al);
	}
}
</string>

Yukarıdaki kodun çıktısı aşağıdaki gibidir:

Yukarıdaki örnekte öncelikle bir ArrayList oluşturulacak ve ona öğeler eklenecektir. Daha sonra indeks 1’deki öğeyi “to” olarak değiştirmek için set() yöntemi kullanıldı. Son olarak güncellenen ArrayList yazdırılacaktır.

 Java’da ArrayList ile öğelerin arasında geçiş yapmak

Java’daki bir ArrayList aracılığıyla bir listenin öğeleri arasında gezinmek için, aşağıdaki örnekte bu kavramı gösteren dizine dayalı öğelere erişmek için for döngüsünü get() yöntemiyle birlikte kullanabilirsiniz:

import java.util.*;

// Main class
class GFG {

	// Main driver method
	public static void main(String args[])
	{
		// Creating an Arraylist of string type
		ArrayList<string> al = new ArrayList();

		// Adding elements to ArrayList
		// using standard add() method
		al.add("welcome");
		al.add("to");
		al.add(1, "maktabkhooneh");

		// Using the Get method and the
		// for loop
		for (int i = 0; i
				</string>

Yukarıdaki örneğin çıktısı aşağıdaki gibidir:

Yukarıdaki örnekte bir ArrayList oluşturulmuş ve ona öğeler eklenmiştir. Daha sonra get() yöntemiyle birlikte bir for döngüsü kullanılarak öğeler dizine dayalı olarak alınacak şekilde yönlendirilir ve her öğeye doğrudan erişmek için geliştirilmiş bir for döngüsü de kullanılır.

Java’da list ve arraylist arasındaki fark nedir?

Kısaca Java’da list ve arraylist arasındaki fark şu şekildedir:

  •  “list”, sıralı bir öğe koleksiyonunu temsil eden bir arayüz türüdür, “ArrayList” ise Liste arayüzünü uygulayan bir sınıftır.
  •  “liste” sıralanmış koleksiyonlarla çalışmak için genel bir arayüz sağlarken, “ArrayList” yeniden boyutlandırılabilir dizi tabanlı bir liste sağlayan özel bir uygulamadır.
  •  ArrayList, indekslerine göre öğelere hızlı rastgele erişim sağlarken, List’in diğer uygulamaları farklı performans özelliklerine sahip olabilir.
  • “ArrayList”, dahili olarak yeniden boyutlandırılması gereken bir dizi kullandığından, diğer “List” uygulamalarından daha fazla bellek kullanabilir.
  •  “liste”, belirli bir uygulama belirtmeden değişkenleri veya parametreleri bildirmek için kullanılabildiğinden esneklik ve kod yalıtımı sağlar.

ArrayList’in, List arayüzünün birçok uygulamasından yalnızca biri olduğunu ve ihtiyaçlarınıza ve kullanım durumunuza bağlı olarak diğer uygulamaların daha uygun olabileceğini unutmamak önemlidir.

ArrayList’in Avantajları

ArrayList’in Java’daki en önemli avantajları şunlardır:

  1. Dinamik boyut: ArrayList dinamik olarak büyüyüp küçülebilir ve gerektiğinde öğelerin kolayca eklenmesine ve çıkarılmasına olanak tanır.
  2. Kullanım kolaylığı: ArrayList’in kullanımının basit olması onu Java geliştiricileri arasında popüler kılmaktadır.
  3. Hızlı erişim: ArrayList, öğelere indekslerine göre hızlı erişim sağlar.
  4. Sıralanmış Koleksiyon: ArrayList, öğelerin sırasını korur ve eklendikleri sıraya göre kolay erişime ve gezinmeye olanak tanır.
  5. Boş değerler desteği: ArrayList boş değerleri saklayabilir ve bir değerin yokluğunun görüntülenmesi gereken durumlar için uygundur.

ArrayList’in dezavantajları

ArrayList’in Java’daki en önemli dezavantajları arasında şunlar sayılabilir:

  1. Dizilerden daha yavaş: ArrayList, öğeleri yeniden boyutlandırma ve taşıma ihtiyacı nedeniyle listenin ortasına öğe eklemek gibi belirli işlemler için dizilerden daha yavaş olabilir.
  2. Artan bellek kullanımı: ArrayList, dinamik olarak yeniden boyutlandırması ve kapasitesini koruması gerektiğinden dizilerden daha fazla belleğe ihtiyaç duyacaktır.
  3. İş parçacığı açısından güvenli değil: ArrayList iş parçacığı açısından güvenli değildir; bu, birden çok iş parçacığının eşzamanlı olarak yaptığı değişikliklerin veri tutarsızlıklarına veya hatalara yol açabileceği anlamına gelir.
  4. Performans düşüşü: ArrayList’teki öğe sayısı arttıkça, dizinin yeniden boyutlandırılması ve öğenin değiştirilmesi nedeniyle öğeleri arama veya listenin ortasına öğe ekleme gibi belirli işlemler yavaşlayabilir.

son söz

ArrayList, dinamik boyut, sıralı koleksiyon ve kullanım kolaylığı ile dinamik bir dizinin rahatlığını sağlar. Ancak performans ve bellek kullanımı açısından dizilere göre dezavantajları vardır ve çok iş parçacıklı ortamlarda daha fazla dikkat gerektirir. Bu yazılı makalede, Java’daki ArrayList’in tam açıklaması, örnekler ve ilgili kodlarla birlikte verilmiştir. Umarım bu makale sizin için faydalı olmuştur.