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

无法将java.util.Optional与stream转换

丁立果
2023-03-14
@Entity
@Data @AllArgsConstructor @NoArgsConstructor
public class Student {
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;
Stream.of("John","Sophie","emilia").forEach(s->{
            studentRepository.save(new Student(s));
        });
int[] empIds = { 1, 2, 3 };
        List<Student> students= Stream.of(empIds)
                .map(studentRepository::findById).collect(Collectors.toList());

共有1个答案

漆雕欣德
2023-03-14

第一个问题是stream.of将创建int arrays流,而不是Integer流

例如:

Stream.of(empIds).forEach(System.out::println);      //[I@7c3e4b1a
IntStream.of(empIds).forEach(System.out::println);   //1 2 3

因此,请使用IntStream.ofArrays.Stream()

数组.流

List<Student> students= Arrays.stream(empIds)
            .mapToObj(studentRepository::findById)
            .filter(Optional::isPresent)
            .map(Optional::get)
            .collect(Collectors.toList());

IntStream.of

List<Student> students= IntStream.of(empIds)
            .mapToObj(studentRepository::findById)
            .filter(Optional::isPresent)
            .map(Optional::get)
            .collect(Collectors.toList());

在当前方法中,您将返回列表 >

List<Optional<Student>> students= IntStream.of(empIds)
            .map(studentRepository::findById).collect(Collectors.toList());
 类似资料:
  • 主要方法如下- 方法getTableFromTwoChits()中的第2行正在编译fine,而main方法的第3行没有编译。 请解释这种行为背后的原因是什么? 编译错误如下所述-

  • 我是Java 8流的新手。请提供建议,如何转换流<代码>流 例如,我在代码中有一些流: 我怎么能做这样的事 ? 对不起,我的英语不好。

  • 本文向大家介绍Java中将流(Stream)转换为Set,包括了Java中将流(Stream)转换为Set的使用技巧和注意事项,需要的朋友参考一下 首先,设置一个流(Stream)- 现在,声明一个Set并将此流转换为set- 示例 以下是在Java中将Stream转换为Set的程序- 输出结果

  • 问题内容: 我正在尝试将文件保存到SQL Server数据库中,该文件将保存在其中的列是datatype 。 我目前这样做的方式是通过获取文件路径并将文件转换为字节数组。 然后,我使用插入查询和convert函数将字节插入数据库,以将转换为: 但是,在SQL Server数据库中,的值始终为 而且,无论选择哪个文件,都始终是该数字。因此,如果您能告诉我为什么会这样,以及我应该采取什么措施来防止这种

  • 问题内容: 我想将SQL COUNT的结果存储在变量中,然后将它们除,但是出现错误: 注意:类mysqli_result的对象无法在----中转换为int 我曾经在测试时显示结果…我该如何解决? 问题答案: 您需要先获取结果并将其存储在变量中,然后再进行数学运算。

  • 问题内容: 我有一个数据框(df),看起来像: 对于整个时间序列,我尝试将今天的值除以昨天,并使用以下命令记录结果: 但是我得到以下错误: 我怎样才能解决这个问题?我试图使用以下方法将其转换为float: 但是什么也无法工作。 问题答案: 您可以改用numpy.log。Math.log需要一个数字,而不是数组。