Mengurutkan List dengan Stream

Beranda » Java » Mengurutkan List dengan Stream

Java Stream API diperkenalkan pada Java 8 sebagai bagian dari upaya untuk meningkatkan fungsionalitas dan performa dalam pemrosesan data. Sebelum Java 8, operasi pada kumpulan data (seperti List atau Array) hanya dapat menggunakan loop for atau while. Cara ini cenderung panjang, kurang efisien, dan sulit dibaca.

Java Stream terinspirasi oleh konsep pemrograman fungsional yang populer di bahasa lain, dengan tujuan untuk menyediakan cara yang lebih deklaratif dan ringkas untuk memproses data secara kolektif.

Berikut merupakan contoh penggunaan stream untuk melakukan sorting terhadap data user berdasarkan umur.

import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

public class LatihanStream {
    public static void main(String[] args) {
        List<User> users = List.of(
                new User("Budi", 20),
                new User("Ilham", 19),
                new User("Ray", 25)
        );
        
        // mengurutkan user berdasarkan umur dari yang terkecil
        List<User> sortedUser = users.stream()
                .sorted(Comparator.comparing(User::getAge))
                .collect(Collectors.toList());
        System.out.println("sortedUser = " + sortedUser);

        /**
         * output : 
         * sortedUser = [User{name='Ilham', age=19}, User{name='Budi', age=20}, User{name='Ray', age=25}]
         */

        // mengurutkan user berdasarkan umur dari yang terbesar
        List<User> sortedReverse = users.stream()
                .sorted(Comparator.comparing(User::getAge).reversed())
                .collect(Collectors.toList());
        System.out.println("sortedReverse = " + sortedReverse);

        /**
         * output : 
         * sortedReverse = [User{name='Ray', age=25}, User{name='Budi', age=20}, User{name='Ilham', age=19}]
         */
    }


}


class User {
    private String name;
    private int age;

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

Bagaimana, mudah bukan?

Kategori : Java
Oleh : budiyono, diterbitkan : disunting :