工具类包含了一些静态方法,用于执行常见的功能性操作。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 表达式实现。我们可以非常方便地调用这些方法来完成各种字符串操作。