如何使用Lambda表达式实现工具类?代码举例讲解

工具类包含了一些静态方法,用于执行常见的功能性操作。Lambda 表达式可以很好地实现工具类中的方法。我们来看一个例子:
假设我们有一个字符串处理的工具类,包含一些常用的方法,这是一个使用工具类的很好示例。

使用 Lambda 表达式实现工具类:

public class StringUtil {

    // 判断两个字符串是否相等
    public static boolean isEqual(String s1, String s2, BiPredicate<String, String> bp) {
        return bp.test(s1, s2);
    }

    // 过滤掉字符串集合中的空字符串 
    public static List<String> filter(List<String> list, Predicate<String> p) {
        return list.stream().filter(p).collect(Collectors.toList());
    }

    // 转换字符串集合中每个字符串的大小写 
    public static List<String> convert(List<String> list, Function<String, String> f) {
        return list.stream().map(f).collect(Collectors.toList());
    }  

    // 找到字符串集合中第一个符合条件的字符串
    public static Optional<String> findFirst(List<String> list, Predicate<String> p) {
        return list.stream().filter(p).findFirst(); 
    }
}

// 使用
List<String> list = Arrays.asList("A", "B", "C");

boolean equalAB = StringUtil.isEqual("A", "B", (s1, s2) -> s1.equalsIgnoreCase(s2)); 
List<String> filterList = StringUtil.filter(list, s -> !s.isEmpty());
List<String> convertList = StringUtil.convert(list, s -> s.toUpperCase()); 
Optional<String> findFirst = StringUtil.findFirst(list, s -> s.startsWith("A"));

这里 StringUtil 是一个字符串处理的工具类,包含 4 个工具方法,都使用 Lambda 表达式实现。我们可以非常方便地调用这些方法来完成各种字符串操作。