Java 創(chuàng)建流

2022-08-17 11:33 更新

Java流 - Java創(chuàng)建流


已將新方法添加到Java庫以返回流。

我們可以通過以下方式創(chuàng)建流。

  • 從值創(chuàng)建流
  • 從空流創(chuàng)建流
  • 從函數(shù)創(chuàng)建流
  • 從數(shù)組創(chuàng)建流
  • 從集合創(chuàng)建流
  • 從文件創(chuàng)建流
  • 從其他來源創(chuàng)建流

在以下部分中,我們將學(xué)習(xí)如何創(chuàng)建流。


從值創(chuàng)建流

我們可以使用Stream接口的()從單個(gè)值和多個(gè)值創(chuàng)建順序流。

<T> Stream<T> of(T  t)
<T> Stream<T> of(T...values)

從方法簽名,我們可以看到第一個(gè)of()方法從單個(gè)值創(chuàng)建流,而第二個(gè)of()方法從不同長(zhǎng)度參數(shù)創(chuàng)建流

以下代碼創(chuàng)建包含單個(gè)值的流。

import java.util.stream.Stream;

public class Main {
  public static void main(String[] args) {
    Stream<String> stream  = Stream.of("m.hgci.cn");
    stream.forEach(System.out::println);
  }
}

上面的代碼生成以下結(jié)果。


例2

以下代碼創(chuàng)建具有四個(gè)字符串的流。

import java.util.stream.Stream;

public class Main {
  public static void main(String[] args) {
    Stream<String> stream  = Stream.of("XML", "Java",  "CSS", "SQL");
    stream.forEach(System.out::println);
  }
}

上面的代碼生成以下結(jié)果。

例3

以下代碼從對(duì)象數(shù)組創(chuàng)建流。

import java.util.stream.Stream;

public class Main {
  public static void main(String[] args) {
    String[] names = { "XML", "Java", "SQL", "CSS" };
    Stream<String> stream = Stream.of(names);
    stream.forEach(System.out::println);
  }
}

上面的代碼生成以下結(jié)果。

流構(gòu)建器

我們可以使用Stream.Builder<T>創(chuàng)建流。

以下代碼創(chuàng)建流構(gòu)建器。

Stream.Builder<String> builder = Stream.builder();
import java.util.stream.Stream;

public class Main {
  public static void main(String[] args) {
    Stream<String> stream  = Stream.<String>builder()
        .add("XML")
        .add("Java")
        .add("CSS")
        .add("SQL")
        .build();
    stream.forEach(System.out::println);
  }
}

上面的代碼生成以下結(jié)果。

IntStream范圍

我們可以使用IntStream接口中的以下兩種方法從一系列int值創(chuàng)建IntStream。

IntStream range(int start, int end)
IntStream rangeClosed(int start, int end).

它們創(chuàng)建一個(gè)包含開始和結(jié)束之間的有序整數(shù)的IntStream。

指定的結(jié)束在range()方法中是獨(dú)占的,并且在rangeClosed()方法中是包含的。

以下代碼使用這兩種方法創(chuàng)建一個(gè)IntStream,它的整數(shù)為1,2,3,4和5作為其元素:

import java.util.stream.IntStream;

public class Main {
  public static void main(String[] args) {
    IntStream oneToFive  = IntStream.range(1, 6);
    //IntStream oneToFive  = IntStream.rangeClosed(1, 5);
    oneToFive.forEach(System.out::println);
  }
}

像IntStream接口一樣,LongStream類還包含range()和rangeClosed()方法,它們接受類型為long的參數(shù),并返回一個(gè)LongStream。

上面的代碼生成以下結(jié)果。

空流

空流沒有元素。

我們可以使用empty()靜態(tài)方法從Stream接口以創(chuàng)建空的順序流。

import java.util.stream.Stream;

public class Main {
  public static void main(String[] args) {
    Stream<String> stream  = Stream.empty();
    stream.forEach(System.out::println);
  }
}

IntStream,LongStream和DoubleStream接口還包含一個(gè)empty()靜態(tài)方法來創(chuàng)建一個(gè)空的基本類型流。

以下代碼創(chuàng)建一個(gè)空的整數(shù)流。

IntStream numbers = IntStream.empty();

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)