Takip et

Java’da List.of() ve Arrays.asList() Karşılaştırması

Java’da List.of() ve Arrays.asList() Karşılaştırması

Java geliştiricileri sıklıkla liste oluşturmak için List.of() ve Arrays.asList() metodlarını kullanır. Ancak bu iki metod arasında önemli farklar vardır. Bu makalede, List.of() ve Arrays.asList() metodlarını detaylı olarak karşılaştırarak, hangi durumda hangisinin kullanılması gerektiğini açıklayacağız. Aynı zamanda, performans ve kullanılabilirlik açısından avantaj ve dezavantajlarını ele alacağız.

List.of(): Değiştirilemez Listeler için

Java 9 ile birlikte gelen List.of() metodu, değiştirilemez (immutable) listeler oluşturmak için kullanılır. Bu, liste oluşturulduktan sonra elemanlarının eklenmesi, silinmesi veya değiştirilmesinin mümkün olmadığı anlamına gelir. Bu özellik, özellikle çoklu threadli ortamlarda veri bütünlüğünü korumak için son derece önemlidir. List.of() metodu ile oluşturulan listeler, thread-safe’tir. Örneğin:


List<String> isimler = List.of("Ali", "Veli", "Ayşe");

Bu kod bloğu, “Ali”, “Veli” ve “Ayşe” elemanlarını içeren değiştirilemez bir liste oluşturur. Bu listeye yeni bir eleman eklemeye veya mevcut bir elemanı değiştirmeye çalışırsanız, UnsupportedOperationException hatası alırsınız. Bu durum, beklenmedik davranışları önleyerek uygulamanın kararlılığını sağlar. Ayrıca, List.of() ile oluşturulan listeler, Arrays.asList() ile oluşturulan listelerden daha az kaynak tüketirler. Bu nedenle, özellikle büyük listeler için tercih edilmelidirler. Sonuç olarak, değiştirilemezlik ihtiyacı ve performans önemliyse, List.of() metodu ideal bir seçimdir.

Arrays.asList(): Esneklik Ama Dikkat Gerektiriyor

Arrays.asList() metodu, var olan bir diziyi (array) bir listeye dönüştürmek için kullanılır. Oluşturulan liste, alttaki diziye bağlıdır. Bu da, liste üzerinde yapılan değişikliklerin alttaki diziyi de etkilemesi anlamına gelir. Örneğin:


String[] isimlerDizisi = {"Ali", "Veli", "Ayşe"};
List<String> isimlerListesi = Arrays.asList(isimlerDizisi);
isimlerListesi.set(0, "Ahmet"); // isimlerDizisi[0] da "Ahmet" olur.

Ancak, Arrays.asList() ile oluşturulan listelerin boyutu değiştirilemez. add() veya remove() gibi metodları kullanarak listeye eleman eklemeye veya listeden eleman silmeye çalışırsanız, UnsupportedOperationException hatası alırsınız. Bu durum, listeyi değiştirmek istediğinizde sınırlamalar getirebilir. Bu nedenle, listeyi değiştirmeyi planlıyorsanız, Arrays.asList() yerine ArrayList gibi değiştirilebilir liste sınıflarını kullanmanız daha güvenli olacaktır. Öte yandan, Arrays.asList(), var olan bir diziyi hızlıca bir listeye dönüştürmek için pratik bir yoldur. Bu nedenle, listeyi değiştirmeye ihtiyacınız yoksa, Arrays.asList() kullanabilirsiniz. Bu durumda, performans açısından, özellikle küçük diziler için, avantajlı olabilir. Ancak, List.of()‘ın immutable yapısı, çoklu threadli ortamlar için daha güvenilir bir seçimdir.

Hangisini Ne Zaman Kullanmalıyım?

Kısaca özetlersek; değiştirilemez bir listeye ihtiyacınız varsa ve performans önemliyse, List.of() kullanmalısınız. Eğer var olan bir diziyi listeye dönüştürmeniz gerekiyorsa ve listeyi değiştirmeyecekseniz, Arrays.asList() kullanabilirsiniz. Ancak, listeyi değiştirmeyi planlıyorsanız, ArrayList veya diğer değiştirilebilir liste sınıflarını tercih etmeniz daha güvenli olacaktır. Doğru seçimi yapmak, kodunuzun güvenilirliğini ve performansını artıracaktır. Daha detaylı bilgi için fatihsoysal.com sitesini ziyaret edebilirsiniz.

Ayrıca, konuyla ilgili daha fazla bilgi için şu kaynağa da göz atabilirsiniz: List.of() vs Arrays.asList() in Java

Umarım bu karşılaştırma, Java geliştirme sürecinizde size yardımcı olur.

#Etiketler: Java, List.of(), Arrays.asList(), immutable, değiştirilemez liste, liste oluşturma, performans, thread-safe, ArrayList, dizi, array, Java 9

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Mobil sürümden çık