是否有等同于以下内容的流
List<Integer> ints;
while (!(ints = this.nextInts()).isEmpty()) {
// do work
}
首先,感谢@OlivierGrégoire的评论。它改变了我对新知识的答案。
Spliterator
为未知的大小编写您自己的nextInts
,然后您可以使用StreamSupport#stream
创建自己的流nextInts
。例如:
generateUntil(this::nextInts, List::isEmpty).forEach(list -> {
//do works
});
import static java.util.stream.StreamSupport.stream;
<T> Stream<T> generateUntil(final Supplier<T> generator, Predicate<T> stop) {
long unknownSize = Long.MAX_VALUE;
return stream(new AbstractSpliterator<T>(unknownSize, Spliterator.ORDERED) {
@Override
public boolean tryAdvance(Consumer<? super T> action) {
T value = generator.get();
if (stop.test(value)) {
return false;
}
action.accept(value);
return true;
}
}, false);
}
问题内容: 当我编写如下while循环时,在eclipse中使用Java时,我已经无数次朋克: 实际上,我想要 这是一个非常简单的错误,但是它在我身上经常发生,并且完全使该程序无效。这样做的原因是因为当我编写与等式相反的赋值时,Eclipse甚至没有引发警告。这使我相信必须要有一个存在赋值方程的while循环的原因,但是为什么呢?我想不出一次用! 问题答案: 这样的赋值在C和C ++中很流行(尤其
因为我相信这是一个很好的编程实践,所以如果我的所有(局部或实例)变量只需要编写一次,我就将它们设为< code>final。 但是,我注意到当变量赋值可以抛出异常时,您不能将所述变量设为最终变量: 有没有办法在不诉诸临时变量的情况下做到这一点?(或者这不是最终修饰符的正确位置?)
问题内容: 好的,我想知道的是Java有什么方法可以执行以下Python可以做到的… 因为在我看来Java可以使您获得相同的结果(我特别需要每次使用2个数字,而缺少-1来表示最后一个字符) 我还没有用Java来研究数组/列表,所以真正希望Java比这更容易 编辑:将string_sample [3]的“ i”修改为“ l”。很好看的Maroun! 问题答案: 抱歉,Java的灵活性不如Python
问题内容: 有人知道类似于JavaRobot的Python类吗? 具体来说,我想在Ubuntu中执行屏幕抓取,并最终跟踪鼠标单击和键盘按下(尽管这是一个稍微不同的问题)。 问题答案: 如果您有GTK,则可以使用gtk.gdk.Display类来完成大部分工作。它控制键盘/鼠标指针获取一组对象。
问题内容: 当搜索复杂的JSON数组和哈希中的项目时,例如: 我可以使用某种查询语言来查找商品吗? 问题答案: 是的,它称为JSONPath。源码现在在GitHub上。 它还集成到DOJO中。
以下代码不能用javac 1.8.0_144和ECJ编译: > 未声明为最终。 在赋值表达式(§15.26)中,它从不作为左手边出现。(请注意,包含 初始值设定项的局部变量声明符不是赋值表达式。) 它从不作为前缀或后缀递增或递减运算符的操作数出现(§15.14,§15.15)。 它从不作为前缀或后缀递增或递减运算符的操作数出现。 方法、构造函数、λ或异常参数(§8.4.1,§8.8.1,§9.4,