首页 > 解决方案 > 使用字符串流的函数不适用于单个字符串?

问题描述

在里面MyService,我有以下指令,它会生成以分号分隔的用户电子邮件字符串:

users.stream()
     .map(UserEntity::getEmail)
     .filter(mailValidator.isValid())
     .collect(Collectors.joining(";"));

MailValidator被注入MyService使用Spring。这是它的定义:

@Service
public class MailValidator {

  private final Pattern mailRegex = Pattern.compile(/** some regular expression */);

  public Predicate<String> isValid() {
    return mailRegex.asPredicate();
  }
}

一切正常。但MailValidator我认为,以上内容在该用例之外没有用处。

更准确地说:我可以MailValidator在字符串流上使用。不过,我怎样才能让它自己工作String呢?

标签: javastringjava-8java-streampredicate

解决方案


您的isValid()方法返回一些实现Predicate接口的对象。如果您检查 Javadocs for Predicate它有一个test(T t)方法。您所要做的就是在您的输入字符串上调用该方法。最后它可能看起来像这样:

String myStringVariable = "test";
boolean isValid = mailValidator.isValid().test(myStringVariable);

推荐阅读