一、Java Stream.of()和IntStream.range()的區別
1、數據類型不同
Stream.of()返回的是一個泛型類型的Stream,可以接受任意類型的對象,包括基本數據類型和對象類型。而IntStream.range()返回的是一個IntStream,只能接受基本數據類型int。
2、元素來源不同
Stream.of()接受一系列的元素作為參數,這些元素可以是任意類型的對象,可以是單個元素或者是一個數組。而IntStream.range()接受兩個參數,一個是起始值(inclusive),一個是結束值(exclusive),并生成一個序列從起始值到結束值-1的整數。
3、序列長度不同
IntStream.range()生成的序列長度是確定的,它是結束值減去起始值。而Stream.of()的序列長度是不確定的,它取決于傳入的元素個數。
4、中間操作不同
Stream.of()和IntStream.range()可以使用許多相同的中間操作,例如filter、map、reduce等。但是,IntStream.range()還提供了一些特殊的中間操作,例如rangeClosed()、sum()、average()等,這些操作只適用于基本數據類型int。
5、終止操作不同
終止操作是Stream流的最后一個操作,用于獲取結果或將流轉換為其他類型。Stream.of()和IntStream.range()可以使用相同的終止操作,例如forEach、collect、toArray等。但是,IntStream.range()還提供了一些特殊的終止操作,例如sum()、average()、min()、max()等,這些操作只適用于基本數據類型int。
6、使用場景不同
Stream.of()適用于處理任意類型的對象,例如集合、數組、枚舉等。而IntStream.range()適用于處理基本數據類型int的序列,例如計算數列、求和、平均值等。