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

如何使用java Stream检查集合是否为空

单于阳
2023-03-14
@RequestMapping(value = "/find/pks", 
                method = RequestMethod.GET, 
                produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Collection<User>> getUsers(@RequestBody final Collection<String> pks)
{
    return StreamSupport.stream(userRepository.findAll(pks).spliterator(), false)
         .map(list -> new ResponseEntity<>(list , HttpStatus.OK))
         .orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND));
}
Iterable<T> findAll(Iterable<PK> pks);

共有1个答案

李鹏
2023-03-14

你把两件事弄混了。第一个任务是将iterable转换为集合,您确实可以使用streamAPI解决该问题:

Collection<User> list=
    StreamSupport.stream(userRepository.findAll(pks).spliterator(), false)
   .collect(Collectors.toList());

请注意,此流是user的流,而不是列表流。因此,您不能将list映射到具有此流的其他内容。map操作将把流的每个元素映射到一个新元素。

则可以使用此列表创建responseEntity

return list.isEmpty()? new ResponseEntity<>(HttpStatus.NOT_FOUND):
                       new ResponseEntity<>(list, HttpStatus.OK);
ResponseEntity<User> responseEntity=
    StreamSupport.stream(userRepository.findAll(pks).spliterator(), false)
   .collect(Collectors.collectingAndThen(Collectors.toList(),
      list -> list.isEmpty()? new ResponseEntity<>(HttpStatus.NOT_FOUND):
                              new ResponseEntity<>(list, HttpStatus.OK) ));
 类似资料:
  • 问题内容: 我要实现以下功能: 如何检查向量元素类型? 请注意, 向量可能为空,因此我无法检查第一个元素是“ instanceof”整数还是String … 编辑: 好吧,我脑子里有个念头,我不知道它是否会起作用 我可以按以下方式实现checkType函数: 是否可以检查T是否为整数?! 提前致谢 问题答案: *由于 类型擦除, *泛型类型参数 在运行时不可恢复(某些特殊情况除外)。这意味着在运行

  • 那么如何在HQL中检查集合是否为空?简单的例子: 如果标题是一个变量,我可以 但是如果标题是一个列表/集合呢? 如果标题是列表,这将不起作用。经过激烈的搜索,我尝试了是空的、大小的和存在的函数,我还尝试了(: title)是空选项。 以上都不起作用。我知道有一种硬编码方式,根据标题列表的状态编写不同的查询,如果为空,则一个查询,如果为空,则另一个查询。但这将产生许多类似的HQL查询,只需稍作修改。

  • 问题内容: 有没有一种方法可以检查nodestore的firestore中是否存在子集合? 目前,我正在使用文档,但是我需要检查文档中是否存在子类以便写入一些数据。 问题答案: 就在这里。您可以使用docs.length来知道子集合是否存在。 我制作了一个样本来指导您,希望对您有所帮助。

  • 我有一个具有如下结构的集合对象: 我该怎么办?非常感谢,很抱歉我的英语不好!

  • 问题内容: 将为空或以逗号分隔的列表(或单个值)。检查它是否为空的最简单方法是什么?我假设只要将数组提取到?中就可以这样做。在这种情况下,跳过展开是否为空可能会更有效,但是出于参数的考虑,我将如何检查数组是否也为空? 问题答案: 如果只需要检查数组中是否有任何元素 如果您需要在检查之前清除空值(通常是为了防止产生奇怪的字符串):

  • 问题内容: 我正在使用以下脚本读取目录。如果目录中没有文件,则应说空。问题是,即使里面有ARE文件,它总是说目录是空的,反之亦然。 问题答案: 似乎您需要的不是glob,因为glob无法看到Unix隐藏文件。 请注意,这段代码并不是效率的最高峰,因为不必仅知道目录是否为空就读取所有文件。因此,更好的版本是 顺便说一句,不要使用 单词 来代替 布尔 值。后者的目的是告诉您是否有空。一个 表达式已经返