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

使用Stream API创建对象初始化循环

武琛
2023-03-14

我有一组常量值,可以作为列表使用。使用这些值,我必须创建一个键值对对象,并且必须将该对象添加到列表中。我想在JAVA 8中使用流API来实现这一点。下面是使用for循环的示例实现

for (int i=0; i<length; i+=2){    
    list.add(new sampleObject(constant[i],constant[i+1]);
}

这可以使用流减少操作来实现吗?

共有2个答案

范修伟
2023-03-14

当然可以!

IntStream.iterate(0, i -> i < length, i -> i + 2)
         .mapToObj(i -> new sampleObject(constant[i], constant[i+1]))
         .collect(Collectors.toList());

我不太清楚,但常量可能必须是final,或者有效地是final才能编译。

注意:我刚刚意识到,这个重载的iterate方法是在Java9中添加的。有关Java8解决方案,请参阅davidxxx的答案!

燕靖
2023-03-14

链<代码>IntStream。iterate()生成无限的IntStream。limit()使其有限:

List<sampleObject> list = 
    IntStream.iterate(0, i -> i + 2)
              .limit(Math.ceil(length / 2D))
              .mapToObj(i -> new sampleObject(constant[i], constant[i+1]))
              .collect(Collectors.toList());
 类似资料:
  • 我在使用Mockito进行单元测试初始化对象时遇到了一些困难 这是我的测试代码 要测试的代码 RecTangleService、CircleService和SquareService用注释我尝试了很多选项,最终得出结论。我没有得到我错在哪里。我试着在网上搜索了很多地方,但找不到任何帮助。

  • 在某些情况下,我的广播接收器是不需要的,所以需要检查接收器是否为空,但有些如何这个对象不为空,即使不使用它和造成崩溃。

  • 我预计Spring会通过将属性“property.key”设置为“property_value”来初始化StorageConfiguration对象。 但是,我得到以下异常 org.springframework.beans.factory.beanCreationException:创建类路径资源[applicationContext.xml]中定义的名为“storage”的bean时出错:在设

  • 我使用FFMPEG-segment对桌面上的视频捕获进行分段,并通过网络发送它们,以便提供给客户,并使用dash.js播放。问题是播放器正在搜索初始化段,而我似乎不知道如何创建它。 我使用以下ffmpeg命令创建段: 我为流创建的清单如下所示: 播放机调试模式打印以下内容: 如何为生成的段创建初始化段?我似乎无法让它起作用。

  • 我想使用“=”符号初始化MyClass的对象。 例如。字符串a=“你好”; 我想做 这是我用构造函数写的类