Java IntStream迭代vs生成何时使用什么?

时间:2019-10-14 08:45:34

标签: java java-8 java-stream

看来 // init the state with your initial value "1 Something Street, etc" const [text, setText] = useState(INITIAL_VALUE_HERE) <StandaloneSearchBox ref={ props.onSearchBoxMounted } bounds={ props.bounds } // have onPlacesChanged set the state when a new option is picked // to whatever the address text of the selected place is // (needs to be implemented appropriately in onPlacesChanged of course) onPlacesChanged={() => { props.onPlacesChanged(setText) }} > <input className="form-control" placeholder={ props.placeholder } type="text" value={text} // control the input value with state onChange={(e) => { setText(e.target.value) }} // update the state when you type something /> </StandaloneSearchBox> 只是fr.setLayout(null); 的轻量级订购版本。 是真的吗如果没有,核心区别是什么?

3 个答案:

答案 0 :(得分:21)

请注意它们的签名有何不同:

  • generateIntSupplier,这意味着您应该生成整数而不给出任何内容。示例用法包括创建相同整数的恒定流,创建随机整数的流。请注意,流中的每个元素如何不依赖于上一个元素。

  • iterate包含一个seed和一个IntUnaryOperator,这意味着您应该基于上一个元素生成每个元素。例如,这对于创建归纳定义的序列很有用。在这种情况下,每个元素应该依赖于前一个元素

答案 1 :(得分:8)

    另一方面,
  1. IntStream.iterate返回一个有序的IntStream IntStream.generate返回一个无序的IntStream 可以帮助加快并行流管道。

  2. 最好使用
  3. IntStream.generate来生成Javadoc中指定的随机值或常量值,我猜最有可能针对返回的流的特性。

答案 2 :(得分:5)

除了顺序外,用法也有所不同。让我们看一下方法签名:

  • iterate(int seed, IntUnaryOperator f)
  • generate(IntSupplier s)

Iterate明确给出了起始值作为参数和一元运算符,该运算符用于从上一个生成下一个值。在这里,运算符可以很容易地在没有内部状态的情况下保持不变,并且可以在多个地方并行重用而不会出现任何问题。

生成使用供应商。那些可以提供常数或随机数,或者需要具有内部状态才能提供类似(1、2、3,...)的序列。