在 Java 中計算兩個數組的和
1. 概述
數組是Java中最常用的數據結構之一。它們允許我們在單個變量中存儲相同類型的多個值。有時,我們可能需要對兩個或多個數組的元素進行一些操作,例如加、減、乘、除。
在本教程中,我們將重點介紹如何在 Java 中逐個元素計算兩個數組的總和。
2. 數組求和的不同方法
由於各種原因,計算數組的總和是 Java 中一項常見且有用的任務。一些可能的應用是:
- 對向量或矩陣執行算術運算
- 組合或合併來自不同來源或格式的數據
- 對數值數據等進行統計分析或數據操作
要計算兩個數組的總和,兩個數組的類型和大小必須相同。如果它們有不同的類型或大小,我們會得到一個IllegalArgumentException
。為了解決這個問題,我們必須創建第三個相同大小的數組,然後存儲給定數組的相應元素的總和:
讓我們探索不同的方法來做到這一點。
2.1.使用 For 循環
for 循環是迭代兩個數組的元素並將它們加在一起的最基本、最直接的方法。我們可以使用帶有索引變量的 for 循環,該變量從 0 到數組長度減一。
在循環內部,我們可以使用索引變量訪問兩個數組的每個元素,並將它們的總和存儲在第三個數組的相同索引處。讓我們使用此方法計算兩個數組的總和:
public int[] sumOfTwoArrays(int[] arr1, int[] arr2) {
int[] arr3 = new int[arr1.length];
for (int i = 0; i < arr1.length; i++) {
arr3[i] = arr1[i] + arr2[i];
}
return arr3;
}
2.2.使用 For-each 循環
for-each 循環是 for 循環的簡化版本,不需要索引變量。相反,它使用一個變量來保存一個數組的每個元素並迭代所有元素。
在循環內部,我們可以使用隨著每次迭代而遞增的計數器變量來訪問另一個數組的每個元素。然後我們可以將它們的總和存儲在第三個數組中相同的計數器值處。接下來我們來實現一下:
public int[] sumOfTwoArrays(int[] arr1, int[] arr2) {
int[] arr3 = new int[arr1.length];
int counter = 0;
for (int num1 : arr1) {
arr3[counter] = num1 + arr2[counter];
counter++;
}
return arr3;
}
2.3.使用流
這是 Java 中計算數組的更高級、更實用的方法。流是支持過濾、映射、縮減等各種操作的數據序列。
我們可以使用流將兩個數組轉換為IntStream
對象,即原始 int 值的流。然後,我們可以使用IntStream
類中的range
方法創建從 0 到兩個數組的最小長度的索引流。接下來,我們可以使用map
方法來應用一個函數,將兩個數組的相應元素相加並返回一個int值。最後,我們可以使用toArray
方法將結果流收集到 int 數組中:
public static int[] sumOfTwoArrays(int[] arr1, int[] arr2) {
IntStream range = IntStream.range(0, Math.min(arr1.length, arr2.length));
IntStream stream3 = range.map(i -> arr1[i] + arr2[i]);
int[] arr3 = stream3.toArray();
return arr3;
}
3. 不同方法的比較
讓我們從簡單性、可讀性、性能、內存使用等方面來比較和對比這些方法的優缺點。
3.1.使用 For 循環
for循環是最簡單、最直接的計算方法。它不需要任何特殊的語法或功能。它也很容易理解和調試,因為它遵循清晰的順序邏輯。
但是,使用 for 循環可能有一些缺點。它需要一個索引變量來訪問數組的每個元素,這可能會引入錯誤或相差一的錯誤。它還需要第三個數組來存儲總和值,這可能會增加內存使用量和ArrayIndexOutOfBounds
異常的風險。這使得它的效率低於其他方法。
3.2.使用 For-each 循環
for-each 循環更加簡潔和優雅。它不需要索引變量。它直接迭代元素並使用計數器變量來訪問另一個數組的相應元素。語法更具可讀性和直觀性。
但是,它還需要第三個數組來存儲總和值,這會增加內存使用量。此外,如果處理不當,使用計數器變量可能會引入錯誤或相差一的錯誤。
3.3.使用流
這種方法更具功能性和表現力。它不需要任何索引或計數器變量,因為它使用流將數組作為元素序列進行操作。它使用toArray()
方法在內部創建第三個數組。
缺點是java.util.stream
會增加代碼的冗長性和復雜性。
4。結論
在本文中,我們學習瞭如何在 Java 中逐元素計算兩個數組的總和。
代碼示例可在 GitHub 上獲取。