下面是我的普通for循环,我想重构相同的代码以使用java8 IntStream。
for(int i=0; i<= historyList.size(); i++) {
if (isExist(historyList, status, i)) {
return historyList.get(i).getCreated();
}
}
下面是经过重构的IntStream
版本
IntStream.rangeClosed(0, historyList.size()).forEach(i -> {
if (isExist(historyList, status, i)) {
return historyList.get(i).getCreated(); -- Error: Unexpected return value
}
});
但在返回时会出现错误,如上图所示。
错误:意外的返回值
如何以恰当的方式重构上述代码?
intStream#foreach
不返回任何数据(void
),因此无法从其中返回任何数据。相反,您可以map
将数据映射到希望返回的类型,然后返回它(或其他值):
return IntStream.rangeClosed(0, historyList.size())
.filter(i -> isExist(historyList, status, i))
.map(historyList::get)
.map(History::getCreated) // Or whatever the object is called.
.findFirst()
.orElse(null); // Or some other value.
如何将下面的for循环with return语句转换为lambda表达式或流with filter。
问题内容: 我有一个二维布尔数组’poorSignal’,需要编写一个返回网格的方法,如果数组上的某个点为true,则显示X,如果为false,则显示O。这是我的代码: 当我编译时,它在方法的最后一行给出了“丢失的返回语句”。我也不确定在打印数组时’return“ \ n”是否可以添加新行。 这是一个分配问题,所以我不能直接打印它,也不能仅打印布尔值-它必须是产生网格的方法。 问题答案: 编译器无
我得到的错误是“缺少return语句”,代码如下: 有人能帮帮我吗?多谢.
问题内容: 我读到 增强的for循环 比普通的 for循环 更有效: http://developer.android.com/guide/practices/performance.html#foreach 当我搜索它们的效率之间的差异时,我发现的是:如果是普通的for循环,我们需要一个额外的步骤来找出数组的长度或大小等, 但这是唯一的原因,增强的for循环优于普通的for循环吗?在那种情况下,
问题内容: 因此,我正在为不和谐而开发一个聊天机器人,现在正在开发一个可以用作待办事项列表的功能。我有一个命令可以将任务添加到列表中,并将它们存储在字典中。但是,我的问题是以更易读的格式返回列表(参见图片)。 任务存储在一个称为中。但是,为了使bot实际发送消息,我需要使用一条语句,否则它将仅将其打印到控制台而不是实际的聊天记录(参见图片)。 这是我尝试解决的方法,但是由于我使用了for循环,因此
我已经了解了一些关于流的知识,并且知道它们可以用来代替循环。对于这个玩具示例,我使用一个图形数据库来存储一组字符串。数据库将它们存储为顶点。我想检索这些顶点,并将它们转换为字符串,而是使用流。每个顶点都有一组性质;我给它一个键,它返回一个值。如果一个顶点具有我正在寻找的属性,我将它添加到列表中。如果没有,我存储顶点ID。 我有一个for循环,但我不确定如何使用流来代替。代码如下: