首页 > 解决方案 > Java Stream Filter 问题将流式值与所有列表值进行比较

问题描述

这是一张照片,因为 Stackoverflow 的新手

我需要一些帮助来解决我遇到的一个小问题。

私人的

我的问题在这条线上

私人的

该列表充满了一些“列入白名单”的 id,我想将当前的 id(流式传输)与列表的所有值进行比较。并且只有当该值与列表 ID 中的一个匹配时,才让它进入下一步。谢谢帮助。

标签: javabackend

解决方案


对具有给定类别的每个 Quiz 对象进行顺序搜索quizList对性能不利。

您应该转换quizListSet更快的查找。

Set<Integer> quizIds = quizList.stream()
  .map(Quiz::getId)
  .collect(Collectors.toSet());

return hibernateQuizJpaRepository.findAllByCategorySetContaining(new HibernateQuizCategory(quizCategoryId))
  .stream()
  .filter(current -> quizIds.contains(current.getId()))
  // ...

推荐阅读