<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### [generate()](https://lingcoder.gitee.io/onjava8/#/book/14-Streams?id=generate) 參照`RandomWords.java`中**Stream.**`generate()`搭配`Supplier<T>`使用的例子。代碼示例: ~~~ // streams/Generator.java import java.util.*; import java.util.function.*; import java.util.stream.*; public class Generator implements Supplier<String> { Random rand = new Random(47); char[] letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray(); public String get() { return "" + letters[rand.nextInt(letters.length)]; } public static void main(String[] args) { String word = Stream.generate(new Generator()) .limit(30) .collect(Collectors.joining()); System.out.println(word); } } ~~~ 輸出結果: ~~~ YNZBRNYGCFOWZNTCQRGSEGZMMJMROE ~~~ 使用`Random.nextInt()`方法來挑選字母表中的大寫字母。`Random.nextInt()`的參數代表可以接受的最大的隨機數范圍,所以使用數組邊界是經過深思熟慮的。 如果要創建包含相同對象的流,只需要傳遞一個生成那些對象的`lambda`到`generate()`中: ~~~ // streams/Duplicator.java import java.util.stream.*; public class Duplicator { public static void main(String[] args) { Stream.generate(() -> "duplicate") .limit(3) .forEach(System.out::println); } } ~~~ 輸出結果: ~~~ duplicate duplicate duplicate ~~~ 如下是在本章之前例子中使用過的`Bubble`類。**注意**它包含了自己的靜態生成器(Static generator)方法。 ~~~ // streams/Bubble.java import java.util.function.*; public class Bubble { public final int i; public Bubble(int n) { i = n; } @Override public String toString() { return "Bubble(" + i + ")"; } private static int count = 0; public static Bubble bubbler() { return new Bubble(count++); } } ~~~ 由于`bubbler()`與`Supplier<Bubble>`是接口兼容的,我們可以將其方法引用直接傳遞給**Stream.**`generate()`: ~~~ // streams/Bubbles.java import java.util.stream.*; public class Bubbles { public static void main(String[] args) { Stream.generate(Bubble::bubbler) .limit(5) .forEach(System.out::println); } } ~~~ 輸出結果: ~~~ Bubble(0) Bubble(1) Bubble(2) Bubble(3) Bubble(4) ~~~ 這是創建單獨工廠類(Separate Factory class)的另一種方式。在很多方面它更加整潔,但是這是一個對于代碼組織和品味的問題——你總是可以創建一個完全不同的工廠類。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看