Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Phương thức Pattern.asPredicate() trong Java với ví dụ


Interface Predicate của gói java.util.function có thể dùng làm target cho lambda expression. Phương thức test của interface này chấp nhận một giá trị và validate với giá trị hiện tại của Predicate. Trả về true nếu khớp, ngược lại false.

Phương thức asPredicate() của lớp java.util.regex.Pattern trả về một đối tượng Predicate có thể khớp chuỗi với biểu thức chính quy dùng để biên dịch Pattern hiện tại.

Ví dụ 1: Kiểm tra chuỗi có chứa chữ 't' (case-insensitive)

import java.util.Scanner;
import java.util.function.Predicate;
import java.util.regex.Pattern;

public class AsPredicateExample {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Nhập chuỗi đầu vào");
        String input = sc.nextLine();
        
        // Regex tìm chữ 't'
        String regex = "[t]";
        
        // Biên dịch với flag CASE_INSENSITIVE
        Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
        
        // Chuyển regex thành Predicate
        Predicate<String> predicate = pattern.asPredicate();
        
        // Test predicate với chuỗi đầu vào
        boolean result = predicate.test(input);
        if (result) {
            System.out.println("Tìm thấy khớp");
        } else {
            System.out.print("Không tìm thấy khớp");
        }
    }
}

Kết quả

Nhập chuỗi đầu vào: Tutorialspoint
Tìm thấy khớp

Ví dụ 2: Lọc danh sách chuỗi bằng Predicate

import java.util.ArrayList;
import java.util.Arrays;
import java.util.function.Predicate;
import java.util.regex.Pattern;

public class AsPredicateExample {
    public static void main(String args[]) {
        ArrayList<String> list = new ArrayList<String>();
        list.addAll(Arrays.asList("Java", "JavaFX", "Hbase", "JavaScript"));
        
        // Regex tìm chữ 'J'
        String regex = "[J]";
        Pattern pattern = Pattern.compile(regex);
        
        // Chuyển thành Predicate
        Predicate<String> predicate = pattern.asPredicate();
        
        // Lọc và in
        list.forEach(n -> {
            if (predicate.test(n))
                System.out.println("Tìm thấy khớp " + n);
        });
    }
}

Kết quả

Tìm thấy khớp Java
Tìm thấy khớp JavaFX
Tìm thấy khớp JavaScript

Ứng dụng: asPredicate() cho phép dùng regex như một Predicate<String> trong Stream API, filter(), lambda, v.v.