当前位置: 首页 > 面试题库 >

是否有与带有赋值变量的while等效的Java流

时宾实
2023-03-14
问题内容

是否有等同于以下内容的流

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,