190320 Development Note
剛要加總一個 int array
用了 "java integer array sum" 當關鍵字
找到以下文章
Find Sum and Average in a Java Array
https://www.baeldung.com/java-array-sum-average
文中使用的是 Java Stream API,範例程式如下。
Arrays.stream( int[] array ) 回傳的是 IntStream,IntStream 是 1.8 才有的類別。難怪我對它不熟。
以下為 IntStream 的 javadoc
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/stream/IntStream.html
在 IntStream 的 sum() 之說明中提到,此 sum() 等同於呼叫以下的方法。
reduce( 0, Integer::sum );
再看 IntStream 的 reduce( int identity, IntBinaryOperator op ) 的說明,提到此方法等同以下的程序
--------------------------------------------------------------------------
int result = identity;
for (int element : this stream)
result = accumulator.applyAsInt( result, element )
return result;
--------------------------------------------------------------------------
上面提及 accumulator,暫且先擱置。
目前就我的理解,上面帶入的 identity 就是所謂的初始值。
至於要進行何種運算,就看帶入的 IntBinaryOperator 來決定。
剛剛在 sum() 的說明中有提到另外一點,就是此方法為 terminal operator
意思為在呼叫完 sum() 時,該 Stream 就無法再使用。
如需再使用 Stream 的相關功能,則必須另起一個 Stream。
以下為 IntBinaryOperator 的 javadoc,這也是 1.8 才有的 interface
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/function/IntBinaryOperator.html
依 IntBinaryOperator 的名稱,可以知道其為整數二元運算。此 interface 僅有一方法如下
int applyAsInt( int left, int right )
用 "java double colon" 找到以下文章
Double colon (::) operator in Java
https://www.geeksforgeeks.org/double-colon-operator-in-java/
其實看到這邊對 IntBinaryOperator 與雙冒號的語法之間的關聯還是一知半解。
有機會再對其進一步的研究。
至少我的整數陣列加總一行就能解決。
=======================================
用了 "java integer array sum" 當關鍵字
找到以下文章
Find Sum and Average in a Java Array
https://www.baeldung.com/java-array-sum-average
文中使用的是 Java Stream API,範例程式如下。
Arrays.stream(array).sum();
以下為 Arrays 的 javadoc。
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Arrays.html
Arrays.stream( int[] array ) 回傳的是 IntStream,IntStream 是 1.8 才有的類別。難怪我對它不熟。
以下為 IntStream 的 javadoc
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/stream/IntStream.html
在 IntStream 的 sum() 之說明中提到,此 sum() 等同於呼叫以下的方法。
reduce( 0, Integer::sum );
再看 IntStream 的 reduce( int identity, IntBinaryOperator op ) 的說明,提到此方法等同以下的程序
--------------------------------------------------------------------------
int result = identity;
for (int element : this stream)
result = accumulator.applyAsInt( result, element )
return result;
--------------------------------------------------------------------------
上面提及 accumulator,暫且先擱置。
目前就我的理解,上面帶入的 identity 就是所謂的初始值。
至於要進行何種運算,就看帶入的 IntBinaryOperator 來決定。
剛剛在 sum() 的說明中有提到另外一點,就是此方法為 terminal operator
意思為在呼叫完 sum() 時,該 Stream 就無法再使用。
如需再使用 Stream 的相關功能,則必須另起一個 Stream。
以下為 IntBinaryOperator 的 javadoc,這也是 1.8 才有的 interface
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/function/IntBinaryOperator.html
依 IntBinaryOperator 的名稱,可以知道其為整數二元運算。此 interface 僅有一方法如下
int applyAsInt( int left, int right )
用 "java double colon" 找到以下文章
Double colon (::) operator in Java
https://www.geeksforgeeks.org/double-colon-operator-in-java/
其實看到這邊對 IntBinaryOperator 與雙冒號的語法之間的關聯還是一知半解。
有機會再對其進一步的研究。
至少我的整數陣列加總一行就能解決。
=======================================
留言
張貼留言