当前位置: 首页 > 知识库问答 >
问题:

Java流式验证结果的方法

潘秦斩
2023-03-14

通常,使用列表,我会遇到这种情况(假设一个用户包含一个ID和一个名称):

List<User> users = loadFromDb();
List<User> lookingForIdResultList = user.stream()
.filter( u -> u.getId() == 1234)
.collect(Collectors.toList())

if(lookingForIdResultList.size() == 0) throw UserNotFoundException()
if(lookingForIdResultList.size() > 1) throw MultipleIdsNotPermittedExcpetion()

User searchedUser = lookingForIdResultList.get(0);
System.out.println("Username is "+ searchedUser.getName())

我在问,是否有一种方法可以使用Java流API来缩短验证?

坦克!

共有1个答案

刘京
2023-03-14

如果您想在代码中进行验证,那么它不会变得更短,但您可以使代码更易读。

一个小的优化是使用count()而不是collect():

users.stream().filter(...).count();

一般来说,我会构建一些帮助函数来完成这项工作,这样您的代码就会看起来更干净、更易读:

List<User> users = loadFromDb();
validateUsers(users); // throws exception

如果您在几个地方需要类似的功能,则可以进一步抽象validateusers方法:

static void validateUsers(List<User> users) {
  validateListHasExactlyOne(users, user -> user.getId() == 1234);
}

static <T> void validateListHasExactlyOne(List<T> list, Predicate<T> pred) {
  long count = list.stream().filter(pred).count();
  if(count == 0) throw ...
  if(count > 1) throw ...
}
 类似资料:
  • 问题内容: 我需要验证结构值是否正确,这意味着我需要单独检查每个字段,这对于少量的小型结构来说很容易,但是我想知道是否有更好的方法。这就是我现在的做法。 这是验证结构中字段值的惯用方式吗?看起来很麻烦。 问题答案: 我认为没有其他方法可以快速完成此操作。但是我找到了一个可以帮助您的go软件包:https : //github.com/go- validator/validator README文件

  • 上下文:我试图找到一种方法来验证XSD和XML与XSD的对比,该方法可以自动集成到软件构建过程中。输入是文件,对于输出,退出代码或可靠的可调节控制台输出就足够了。我在Windows环境中操作。 作为XML和XSD输入,我以Wikipedia(文章“XML模式(W3C)”)中的一个例子为例。 作为工具,我选择尝试XMLLint和Xerces。 问题是,XMLLint和Xerces给出了不同的结果。

  • 我有以下代码: 为什么它会打印Java流?

  • 我们使用分流码算法来计算表达式。我们可以通过简单地应用算法来验证表达式。如果存在缺失操作数、缺失匹配括号和其他内容,则会失败。然而,分流场算法比人类可读的内插有更大的受支持语法。例如, 所有可接受的方式都提供“12”作为调车场算法的输入。”“12”和“12”不是有效的中缀,但标准调车场算法可以处理它们。该算法实际上并不关心顺序,而是按优先顺序应用运算符,以获取“最近”的操作数。 我们希望将输入限制

  • 本文向大家介绍Spring Security验证流程剖析及自定义验证方法,包括了Spring Security验证流程剖析及自定义验证方法的使用技巧和注意事项,需要的朋友参考一下 Spring Security的本质 Spring Security 本质上是一连串的 Filter , 然后又以一个独立的 Filter 的形式插入到 Filter Chain 里,其名为 FilterChainPro

  • 问题内容: 我正在将JSON用户对象发布到我的Golang应用程序中,在其中我将“ req.body”解码为“ User”结构。 和“用户”结构: 虽然我不需要实际验证方面的帮助,但我想知道如何仅在用户名作为JSON对象的一部分包含时验证用户名。目前,如果不包含用户名,则该用户名仍然存在,但为空,即 如何检查是否已将“用户名”作为POSTed对象的一部分? 问题答案: 您可以使用指向字符串的指针: