Java'da, anonim işlevler lambda ifadeleri olarak da bilinir. Daha kısa ve okunabilir kod sağlamanın bir yolu olarak Java 8'de tanıtıldı. Bir sınıfı veya arayüzü açıkça tanımlamak zorunda kalmadan, tek bir kod satırında bir işlevi tanımlamamıza olanak tanırlar.
Arraylist'i sırala
Anonim İşlev Nedir?
Anonim işlev, adı olmayan ve bir tanımlayıcıya bağlı olmayan bir işlevdir. Genellikle satır içi olarak tanımlanır ve başka bir işleve argüman olarak iletilebilir veya bir işlevden değer olarak döndürülebilir. Java'da anonim işlevler, anonim bir işlevi tanımlamanın kısa yolu olan lambda ifadeleri olarak uygulanır.
Sözdizimi
Java'da anonim bir işlevin sözdizimi aşağıdaki gibidir:
(parameters) -> { body }
Parametreler fonksiyonun girdileridir ve gövde ise fonksiyon çağrıldığında çalıştırılan koddur. Giriş olarak iki tamsayıyı alan ve bunların toplamını döndüren anonim bir fonksiyon örneği:
(int a, int b) -> { return a + b; }
Yukarıdaki anonim işlev, başka bir işleve argüman olarak iletilebilir veya bir değişkene atanabilir:
Function add = (a, b) -> a + b;
Bu örnekte, girdi olarak iki tamsayıyı alan ve bunların toplamını döndüren bir fonksiyon olan add adında bir değişken tanımladık.
Anonim İşlevlerin Avantajları
Java'da anonim işlevlerin kullanımının aşağıdakiler de dahil olmak üzere çeşitli avantajları vardır:
Kısa sözdizimi: Anonim işlevler, ayrı bir sınıf veya arayüz tanımlamak zorunda kalmadan bir işlevi tanımlamanın kısa bir yolunu sağlar.
Okunabilir kod: Anonim işlevler satır içinde tanımlandığından kodun okunması ve anlaşılması daha kolay olabilir.
Esneklik: Anonim işlevler diğer işlevlere argüman olarak iletilebilir veya işlevlerden değer olarak döndürülebilir, böylece işlevlerin nasıl kullanıldığı konusunda daha fazla esneklik sağlanır.
Geliştirilmiş performans: Anonim işlevlerin kullanılması, işlevleri tanımlamak ve çağırmak için gereken bellek miktarını ve işlem gücünü azaltarak performansı artırabilir.
tamsayılardan oluşan bir listeyi filtrelemek için anonim işlevlerin (lambda ifadeleri) kullanımını gösteren örnek bir Java kodu aşağıda verilmiştir:
AnonimFunctionExample.java
import java.util.ArrayList; import java.util.List; import java.util.function.Predicate; public class AnonymousFunctionExample { public static void main(String[] args) { List numbers = new ArrayList(); numbers.add(1); numbers.add(2); numbers.add(3); numbers.add(4); numbers.add(5); // Filter the list to only include even numbers Predicate isEven = (n) -> n % 2 == 0; List evenNumbers = filter(numbers, isEven); // Print the even numbers System.out.println('Even numbers:'); for (Integer number : evenNumbers) { System.out.println(number); } } // Filter a list using a predicate public static List filter(List list, Predicate predicate) { List result = new ArrayList(); for (T element : list) { if (predicate.test(element)) { result.add(element); } } return result; } }
Çıktı:
Even numbers: 2 4
Bu kodda, bir tamsayı listesi tanımlarız ve ardından listeyi yalnızca çift sayıları içerecek şekilde filtreleyen bir yüklem tanımlamak için anonim bir işlev (lambda ifadesi) kullanırız. Daha sonra yüklemi listeye uygulamak ve çift sayıların yeni bir listesini döndürmek için filtre yöntemini kullanırız. Son olarak for döngüsü kullanarak çift sayıları yazdırıyoruz.
Dizelerin bir listesini sıralamak için anonim işlevlerin (lambda ifadeleri) kullanımını gösteren başka bir örnek Java kodu:
AnonimFunctionExample.java
import java.util.ArrayList; import java.util.Comparator; import java.util.List; public class AnonymousFunctionExample { public static void main(String[] args) { List fruits = new ArrayList(); fruits.add('Apple'); fruits.add('Banana'); fruits.add('Grape'); fruits.add('Orange'); fruits.add('Pineapple'); // Sort the list of fruits alphabetically fruits.sort((f1, f2) -> f1.compareTo(f2)); // Print the sorted list of fruits System.out.println('Sorted list of fruits:'); for (String fruit : fruits) { System.out.println(fruit); } } }
Çıktı:
Sorted list of fruits: Apple Banana Grape Orange Pineapple
Yukarıdaki kodda, bir meyve listesi tanımladık ve ardından listeyi alfabetik olarak sıralayan bir karşılaştırıcı tanımlamak için anonim bir işlev (lambda ifadesi) kullandık. Daha sonra karşılaştırıcıyı listeye uygulamak ve sıralamak için sort yöntemini kullanırız. Son olarak for döngüsünü kullanarak meyvelerin sıralanmış listesini yazdırıyoruz.
Çözüm
Java'daki anonim işlevler, ayrı bir sınıf veya arayüz tanımlamak zorunda kalmadan işlevleri tanımlamanın kısa ve okunabilir bir yolunu sağlar. Kodun performansını artırmak ve işlevlerin nasıl kullanıldığı konusunda daha fazla esneklik sağlamak için kullanılabilirler. Java 8'de lambda ifadelerinin kullanıma sunulmasıyla birlikte anonim işlevler, geliştiricilerin daha verimli ve bakımı kolay kod yazması için önemli bir araç haline geldi.