Stream API
Published: 2024-05-17 18:58:53

**Java 8 Stream API**, işlerimizi kolaylaştıran bir araçtır ve verimli ve temiz uygulamalar oluşturmak için birçok yeni model getirir. **Stream API**, liste ve dizileri işlemek için işlevsel operasyonlar sağlar. İşte bazı önemli Stream API operasyonları:

1. **Filter (Filtreleme)**:
   - `filter` metodu, bir listeyi veya diziyi belirli bir koşula göre kısıtlamamıza olanak tanır. Örneğin, kullanıcı listesindeki bazı kriterlere göre listeyi indirgeyebiliriz:
     ```java
     List<User> userList = Arrays.asList(user1, user2, user3);
     userList.stream()
             .filter(user -> user.getSurname().contains("a") && user.getAge().equals(65))
             .collect(Collectors.toList())
             .forEach(System.out::println);
     ```
     Yukarıdaki örnekte, isminde 'a' harfi geçenleri ve yaşı 65 olan kullanıcıları filtreleyerek ekrana yazdırmak istedik.

2. **Sorted (Sıralama)**:
   - `sorted` metodu, veri setini belirli parametrelere göre sıralamamıza olanak tanır. Örneğin, kitapların sayfa sayısına göre küçükten büyüğe sıralanışını aşağıdaki gibi yapabiliriz:
     ```java
     List<Book> bookList = Arrays.asList(book1, book2, book3);
     List<Book> bookSortedListByPage = bookList.stream()
                                               .sorted(Comparator.comparingInt(Book::getPage))
                                               .collect(Collectors.toList());
     System.out.println(bookSortedListByPage);
     ```
     Burada `Comparator.comparingInt(Book::getPage)` ile kitapların sayfa sayısına göre sıralama yapacağımızı belirttik.

3. **Map (Dönüşüm)**:
   - `map` metodu, stream içerisindeki her bir nesneye özgü işlemler yapmamıza olanak sağlar. Örneğin, rakamların karesini almak için kullanabiliriz:
     ```java
     List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
     List<Integer> squares = numbers.stream()
                                    .map(n -> n * n)
                                    .collect(Collectors.toList());
     System.out.println(squares);
     ```
     Yukarıdaki örnekte, her rakamın karesini alarak yeni bir liste oluşturduk.

Java Stream API, veri işlemlerini daha anlaşılır ve temiz bir şekilde ifade etmemize yardımcı olur. Bu operasyonlar, kodunuzu daha okunaklı ve etkili hale getirir. 🚀

Kaynaklar:
- [Java 8 Stream Api Nedir? Nasıl Kullanılır?](https://medium.com/@muhammetenesakcayir/java-8-stream-api-32dd3e9aa30f) ¹
- [Java 8 - Stream API (Filter, Sorted, Map, Match, Reduce)](https://www.mobilhanem.com/stream-api-filter-sorted-map-match-reduce/) ²
- [Stack Overflow: How does sorted() operation work if a filter is placed right after?](https://stackoverflow.com/questions/72118729/stream-api-how-does-sorted-operation-works-if-a-filter-is-placed-right-aft) ³

Kaynak: Bing ile konuşma, 17.05.2024
(1) Java 8 Stream Api Nedir ? Nasıl Kullanılır ? ( filter, sorted, map .... https://medium.com/@muhammetenesakcayir/java-8-stream-api-32dd3e9aa30f.
(2) Java 8 – Stream API (Filter, Sorted, Map, Match, Reduce). https://www.mobilhanem.com/stream-api-filter-sorted-map-match-reduce/.
(3) java - Stream API - How does sorted () operation works if a filter .... https://stackoverflow.com/questions/72118729/stream-api-how-does-sorted-operation-works-if-a-filter-is-placed-right-aft.
(4) Java 8 - Stream API – KodEdu. https://kodedu.com/2014/10/java-8-stream-api/.
(5) Difference between map and filter on a java collection stream. https://stackoverflow.com/questions/37154380/difference-between-map-and-filter-on-a-java-collection-stream.
(6) github.com. https://github.com/LinZiYU1996/Learning-Java/tree/a0d9f538c9d373c3a93ccd890006ce0e5e1f2d5d/MyNotes%2FJDK_8%2Fchapter_5%2Fc_5_2%2Fc_5_2_2%2FTest_5_2_1.java.