Rate this post

Trong Java, Predicate là một functional interface trong package java.util.function. Nó có duy nhất một phương thức test() có kiểu trả về boolean, nhận một tham số có kiểu đối tượng bất kỳ và trả về true hoặc false tùy thuộc vào kết quả so sánh điều kiện.

Các bài viết liên quan:

Predicate được sử dụng rất nhiều trong các phương thức của các lớp trong package java.util và java.util.stream như Stream, List, v.v. để lọc, tìm kiếm và thực hiện các thao tác với các đối tượng theo điều kiện nhất định.

Ví dụ:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
Predicate<Integer> isEven = number -> number % 2 == 0;
numbers.stream().filter(isEven).forEach(System.out::println);

Trong ví dụ trên, chúng ta tạo ra một đối tượng List chứa các số nguyên và một đối tượng Predicate isEven để kiểm tra xem một số có phải là số chẵn hay không. Tiếp theo, chúng ta sử dụng phương thức filter() để lọc ra các số chẵn trong List và in ra màn hình

Ví dụ khác:

List<String> names = Arrays.asList("John", "Jane", "Mike", "Bob", "Amanda");
Predicate<String> startsWithJ = name -> name.startsWith("J");
names.stream().filter(startsWithJ).forEach(System.out::println);

Trong ví dụ trên, chúng ta tạo ra một đối tượng List chứa các tên và một đối tượng Predicate startsWithJ để kiểm tra xem một tên có bắt đầu bằng chữ J hay không. Tiếp theo, chúng ta sử dụng phương thức filter() để lọc ra các tên bắt đầu bằng chữ J trong List và in ra màn hình.

Predicate cũng có thể được sử dụng với các phương thức khác nhau của Stream, Collection và các lớp khác nhau để thực hiện các thao tác với các đối tượng theo điều kiện nhất định. Nó cũng có thể được sử dụng với các phương thức của các lớp khác nhau như java.util.function.Consumer, java.util.function.Supplier, v.v.

Tại sao nên sử dụng predicate trong java

Sử dụng Predicate trong Java có nhiều lợi ích như sau:

  • Tách riêng logic tìm kiếm, lọc, v.v. ra khỏi chính thân hàm hoặc class, giúp cho mã dễ đọc hơn và dễ dàng bảo trì và mở rộng.
  • Có thể sử dụng cùng một Predicate với nhiều phương thức khác nhau của Stream, Collection và các lớp khác để thực hiện các thao tác với các đối tượng theo điều kiện nhất định.
  • Có thể kết hợp nhiều Predicate với nhau sử dụng các phương thức and(), or(), negate() để tạo ra các điều kiện phức tạp hơn.
  • Có thể sử dụng Predicate với các phương thức của các lớp khác nhau như java.util.function.Consumer, java.util.function.Supplier, v.v.
  • Giúp cho mã dễ dàng hơn để kiểm thử, vì chúng ta có thể tạo ra các đối tượng Predicate giả để kiểm thử.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now