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?