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