Java’da ArrayList, dinamik olarak boyutlandırılmış öğe koleksiyonunu depolamak için kullanılır. Boyut olarak sabitlenmiş Dizilerin aksine, bir ArrayList, kendisine yeni öğeler eklendiğinde boyutunu otomatik olarak artar.
Bakınız: ArrayList Metotları
ArrayList, Java’nın Collection
framework’ün bir parçasıdır ve Java’nın List
arayüzünü uygular.
Aşağıda, Java’da ArrayList hakkında dikkat edilmesi gereken birkaç önemli nokta verilmiştir –
- ArrayList, dinamik dizi olarak da adlandırılan yeniden boyutlandırılabilir bir dizidir. Yeni unsurları barındırmak için boyutunu büyütür ve öğeler çıkarıldığında boyutunu küçültür.
- ArrayList, öğeleri depolamak için dahili olarak bir dizi kullanır. Tıpkı diziler gibi, elemanları indekslerine göre almanızı sağlar.
- Java ArrayList, yinelenen ve boş değerlere izin verir.
- Java ArrayList, sıralı bir koleksiyondur. Öğelerin ekleme sırasını korur.
- int, char vb. gibi ilkel türlerden bir ArrayList oluşturamazsınız. Integer, Character, Boolean vb. gibi boxed türleri kullanmanız gerekir.
- Java ArrayList senkronize değildir. Birden çok iş parçacığı aynı anda bir ArrayList’i değiştirmeye çalışırsa, nihai sonuç deterministik olmayacaktır. Birden çok iş parçacığı onu değiştirecekse, bir ArrayList’e erişimi açıkça eşitlemeniz gerekir.
ArrayList oluşturma ve ona yeni öğeler ekleme
- ArrayList() yapıcısı kullanılarak ArrayList nasıl oluşturulur.
- Add() metodu kullanarak ArrayList’e yeni öğeler ekleyin.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | import java.util.ArrayList; import java.util.List; class Main { public static void main(String[] args) { // ArrayList Oluşturma List<String> hayvanlar = new ArrayList<>(); // Add metodu ile öğeler ekleme hayvanlar.add("Kaplan"); hayvanlar.add("Aslan"); hayvanlar.add("Kedi"); hayvanlar.add("Köpek"); System.out.println(hayvanlar); // Belirli index numarası ile öğeler ekleme hayvanlar.add(2, "Fil"); System.out.println(hayvanlar); } } |
1 2 3 4 | [Kaplan, Aslan, Kedi, Köpek] [Kaplan, Aslan, Fil, Kedi, Köpek] |
Başka bir koleksiyondan bir ArrayList oluşturma
- ArrayList (Collection c) yapıcısı kullanılarak başka bir koleksiyondan ArrayList nasıl oluşturulur.
- AddAll() yöntemi kullanılarak mevcut bir koleksiyondaki tüm öğeler yeni ArrayList’e nasıl eklenir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | import java.util.ArrayList; import java.util.List; class Main { public static void main(String[] args) { List<Integer> liste1 = new ArrayList<>(); liste1.add(2); liste1.add(3); liste1.add(5); liste1.add(7); liste1.add(11); // ArrayList koleksiyonundan yeni bir koleksiyon oluştur List<Integer> liste2 = new ArrayList<>(liste1); System.out.println(liste2); List<Integer> liste3 = new ArrayList<>(); liste3.add(13); liste3.add(17); liste3.add(19); liste3.add(23); liste3.add(29); // Bir arraylist i başka bir arrayliste ekleem liste3.addAll(liste1); System.out.println(liste3); } } |
1 2 3 4 | [2, 3, 5, 7, 11] [13, 17, 19, 23, 29, 2, 3, 5, 7, 11] |
ArrayList öğelerine erişim
- isEmpty() yöntemi kullanılarak ArrayList öğesinin boş olup olmadığı nasıl kontrol edilir.
- size() yöntemini kullanarak ArrayList’in boyutunu bulma.
- get() yöntemi kullanılarak ArrayList’teki belirli bir dizindeki öğeye nasıl erişilir.
- set() yöntemi kullanılarak ArrayList’teki belirli bir dizindeki öğe nasıl değiştirilir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | import java.util.ArrayList; import java.util.List; class Main { public static void main(String[] args) { List<String> sirketler = new ArrayList<>(); // ArrayList boş mu? System.out.println("sirketler listesi boş mu? : " + sirketler.isEmpty()); sirketler.add("Google"); sirketler.add("Apple"); sirketler.add("Microsoft"); sirketler.add("Amazon"); sirketler.add("Facebook"); // ArrayList boyutunu okuma System.out.println("Listede toplam " + sirketler.size() + " tane şirket var."); System.out.println(sirketler); // Şirketleri okuma String sirket1 = sirketler.get(0); String sirket2 = sirketler.get(1); String sonSirket = sirketler.get(sirketler.size() - 1); System.out.println("İlk Şirket: " + sirket1); System.out.println("İkinci Şirket: " + sirket2); System.out.println("Sonuncu Şirket: " + sonSirket); // Belirtilen indexdeki şirketi değiştir sirketler.set(4, "Walmart"); System.out.println("Değiştiriledikten sonra şirketler: " + sirketler); } } |
1 2 3 4 5 6 7 8 9 | sirketler listesi boş mu? : true Listede toplam 5 tane şirket var. [Google, Apple, Microsoft, Amazon, Facebook] İlk Şirket: Google İkinci Şirket: Apple Sonuncu Şirket: Facebook Değiştiriledikten sonra şirketler: [Google, Apple, Microsoft, Amazon, Walmart] |
ArrayList öğelerini kaldırma
- remove(int index) ile ArrayList’deki belirli bir dizindeki eleman nasıl kaldırılır
- remove(nesne o) ile ArrayList’ten bir eleman nasıl kaldırılır
- removeAll( ) ile ArrayList’ten belirli bir koleksiyonda bulunan tüm öğeler nasıl kaldırılır
- removeIf() ile belirli bir yüklemle eşleşen tüm öğeler nasıl kaldırılır
- clear() ile dizi listesi nasıl temizlenir
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | import java.util.ArrayList; import java.util.List; import java.util.function.Predicate; class Main { public static void main(String[] args) { List<String> progralamaDilleri = new ArrayList<>(); progralamaDilleri.add("C"); progralamaDilleri.add("C++"); progralamaDilleri.add("Java"); progralamaDilleri.add("Kotlin"); progralamaDilleri.add("Python"); progralamaDilleri.add("Perl"); progralamaDilleri.add("Ruby"); System.out.println("İlk durum Liste: " + progralamaDilleri); // 5. indexi kaldırma progralamaDilleri.remove(5); System.out.println("5. indexi kaldırma: " + progralamaDilleri); // Verilen elemanın ilk oluşumunu DiziListesinden kaldır // (öğe ArrayList'de yoksa remove() yöntemi false değerini döndürür) boolean silindiMi = progralamaDilleri.remove("Kotlin"); System.out.println("(\"Kotlin\") Silindikten sonra: " + progralamaDilleri); //Belirli bir koleksiyonda bulunan tüm öğeleri kaldır List<String> scriptDilleri = new ArrayList<>(); scriptDilleri.add("Python"); scriptDilleri.add("Ruby"); scriptDilleri.add("Perl"); scriptDilleri.removeAll(scriptDilleri); System.out.println("removeAll(scriptDilleri): " + scriptDilleri); // Verilen koşulu karşılayan tüm öğeleri kaldırın progralamaDilleri.removeIf(new Predicate<String>() { @Override public boolean test(String s) { return s.startsWith("C"); } }); System.out.println(" \"C\" ile başlayan tüm öğeleri kaldırdıktan sonra: " + progralamaDilleri); // ArrayList'ten tüm öğeleri kaldır progralamaDilleri.clear(); System.out.println("clear() metodu kullanıldıktan sonra: " + progralamaDilleri); } } |
1 2 3 4 5 6 7 8 | İlk durum Liste: [C, C++, Java, Kotlin, Python, Perl, Ruby] 5. indexi kaldırma: [C, C++, Java, Kotlin, Python, Ruby] ("Kotlin") Silindikten sonra: [C, C++, Java, Python, Ruby] removeAll(scriptDilleri): [] "C" ile başlayan tüm öğeleri kaldırdıktan sonra: [Java, Python, Ruby] clear() metodu kullanıldıktan sonra: [] |
ArrayList üzerinde yineleme
- Java 8 forEach ve lambda ifadesi
- iterator()
- iterator() ve Java 8 forEachRemaining() metodu
- listIterator()
- Basit for-each döngüsü
- index ile for döngüsü
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.ListIterator; class Main { public static void main(String[] args) { List<String> diziler = new ArrayList<>(); diziler.add("Breaking Bad"); diziler.add("Game Of Thrones"); diziler.add("Friends"); diziler.add("Prison break"); System.out.println("=== Java 8 forEach ve lambda kullanarak yineleyin ==="); diziler.forEach(dizi -> { System.out.println(dizi); }); System.out.println("\n=== Bir yineleyici kullanarak iterator() ==="); Iterator<String> tvShowIterator = diziler.iterator(); while (tvShowIterator.hasNext()) { String dizi = tvShowIterator.next(); System.out.println(dizi); } System.out.println("\n=== Bir iterator() ve Java 8 forEachRemaining() yöntemi kullanarak yineleme ==="); tvShowIterator = diziler.iterator(); tvShowIterator.forEachRemaining(dizi -> { System.out.println(dizi); }); System.out.println("\n=== Her iki yönde de geçiş yapmak için listIterator() kullanarak yineleyin ==="); // Burada listenin sonundan başlayıp geriye doğru ilerliyoruz. ListIterator<String> tvShowListIterator = diziler.listIterator(diziler.size()); while (tvShowListIterator.hasPrevious()) { String tvShow = tvShowListIterator.previous(); System.out.println(diziler); } System.out.println("\n=== Basit for-each döngüsü ==="); for(String dizi: diziler) { System.out.println(dizi); } System.out.println("\n=== basit for döngüsü index dahil ==="); for(int i = 0; i < diziler.size(); i++) { System.out.println(diziler.get(i)); } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | === Java 8 forEach ve lambda kullanarak yineleyin === Breaking Bad Game Of Thrones Friends Prison break === Bir yineleyici kullanarak iterator() === Breaking Bad Game Of Thrones Friends Prison break === Bir iterator() ve Java 8 forEachRemaining() yöntemi kullanarak yineleme === Breaking Bad Game Of Thrones Friends Prison break === Her iki yönde de geçiş yapmak için listIterator() kullanarak yineleyin === [Breaking Bad, Game Of Thrones, Friends, Prison break] [Breaking Bad, Game Of Thrones, Friends, Prison break] [Breaking Bad, Game Of Thrones, Friends, Prison break] [Breaking Bad, Game Of Thrones, Friends, Prison break] === Basit for-each döngüsü === Breaking Bad Game Of Thrones Friends Prison break === basit for döngüsü index dahil === Breaking Bad Game Of Thrones Friends Prison break |
ArrayList içindeki öğeleri arama
- contains() ile ArrayList’in belirli bir eleman içerip içermediğini kontrol edin.
- indexOf() ile ArrayList içindeki bir elemanın ilk oluşumunun dizinini bulun.
- lastIndexOf() ile ArrayList içindeki bir elemanın son oluşumunun dizinini bulun.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.ListIterator; class Main { public static void main(String[] args) { List<String> isimler = new ArrayList<>(); isimler.add("Hüseyin"); isimler.add("Hayri"); isimler.add("Ahmet"); isimler.add("Ufuk"); isimler.add("Recep"); isimler.add("Taylan"); isimler.add("Hürkal"); // ArrayList'in belirli bir öğe içerip içermediğini kontrol edin System.out.println(" \"Taylan\" var mı? : " + isimler.contains("Taylan")); // Bir ArrayList içindeki bir elemanın ilk oluşumunun dizinini bul System.out.println("indexOf \"Ahmet\": " + isimler.indexOf("Ahmet")); System.out.println("indexOf \"Kemal\": " + isimler.indexOf("Kemal")); //Bir ArrayList içindeki bir elemanın son oluşumunun dizinini bulun System.out.println("lastIndexOf \"Recep\" : " + isimler.lastIndexOf("Recep")); System.out.println("lastIndexOf \"Nuri\" : " + isimler.lastIndexOf("Nuri")); } } |
1 2 3 4 5 6 7 | "Taylan" var mı? : true indexOf "Ahmet": 2 indexOf "Kemal": -1 lastIndexOf "Recep" : 4 lastIndexOf "Nuri" : -1 |
Kullanıcı tanımlı nesnelerden ArrayList oluşturma
ArrayList, jenerikleri desteklediğinden, herhangi bir türde bir ArrayList oluşturabilirsiniz. Integer, String, Double gibi basit tiplerde veya ArrayList veya HashMaps veya ArrayList gibi herhangi bir kullanıcı tanımlı nesnenin ArrayList’i olabilir.
Aşağıdaki örnekte, kullanıcı tanımlı nesnelerin ArrayList’ini nasıl oluşturacağınızı öğreneceksiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | import java.util.ArrayList; import java.util.List; class Kisi { private String isim; private int yas; public Kisi(String isim, int yas) { this.isim = isim; this.yas = yas; } public String getIsim() { return isim; } public void setName(String isim) { this.isim = isim; } public int getYas() { return yas; } public void setAge(int yas) { this.yas = yas; } } class Main { public static void main(String[] args) { List<Kisi> kisiler = new ArrayList<>(); kisiler.add(new Kisi("Hüseyin", 25)); kisiler.add(new Kisi("Hayri", 34)); kisiler.add(new Kisi("Ahmet", 29)); kisiler.forEach(kisi -> { System.out.println("İsim : " + kisi.getIsim() + ", Yaş : " + kisi.getYas()); }); } } |
Çıktı:
1 2 3 4 5 | İsim : Hüseyin, Yaş : 25 İsim : Hayri, Yaş : 34 İsim : Ahmet, Yaş : 29 |
ArrayList Öğelerini Sıralama
Bir ArrayList Listesini sıralamak, programlarınızda karşılaşacağınız çok yaygın bir görevdir. Bu bölümde size nasıl yapılacağını göstereceğim –
- Collections.sort() yöntemini kullanarak ArrayList’i sıralayın.
- ArrayList.sort() yöntemini kullanarak bir ArrayList sıralayın.
- Özel bir karşılaştırıcıyla kullanıcı tanımlı nesnelerin ArrayList’ini sıralayın.
Collections.sort() kullanımı:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> sayilar = new ArrayList<>(); sayilar.add(13); sayilar.add(7); sayilar.add(18); sayilar.add(5); sayilar.add(2); System.out.println("Öncesi : " + sayilar); Collections.sort(sayilar); System.out.println("Sonrası : " + sayilar); } } |
ArrayList.sort() kullanarak sıralama:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | import java.util.ArrayList; import java.util.Comparator; import java.util.List; public class Main { public static void main(String[] args) { List<String> isimler = new ArrayList<>(); isimler.add("Ayşe"); isimler.add("Neriman"); isimler.add("Hatice"); isimler.add("Suna"); System.out.println("İsimler : " + isimler); isimler.sort(new Comparator<String>() { @Override public int compare(String isim1, String isim2) { return isim1.compareTo(isim2); } }); isimler.sort((isim1, isim2) -> isim1.compareTo(isim2)); isimler.sort(Comparator.naturalOrder()); System.out.println("Sıralı İsimler : " + isimler); } } |
Özel Nesnelere göre ArrayListi sıralama:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; class Kisi { private String isim; private int yas; public Kisi(String isim, int yas) { this.isim = isim; this.yas = yas; } public String getIsim() { return isim; } public void setName(String isim) { this.isim = isim; } public int getYas() { return yas; } public void setAge(int yas) { this.yas = yas; } } class Main { public static void main(String[] args) { List<Kisi> kisiler = new ArrayList<>(); kisiler.add(new Kisi("Hüseyin", 25)); kisiler.add(new Kisi("Hayri", 34)); kisiler.add(new Kisi("Ahmet", 29)); System.out.println("Person List : " + kisiler); // Yaşa göre sıralama kisiler.sort((kisi1, kisi2) -> { return kisi1.getYas() - kisi2.getYas(); }); kisiler.sort(Comparator.comparingInt(Kisi::getYas)); System.out.println("Sıraladıktan sonra : " + kisiler); Collections.sort(kisiler, Comparator.comparing(Kisi::getIsim)); System.out.println("Ada göre sıralama : " + kisiler); } } |
1 Yorum