153
A
回答
248
有加入到java.util.Arrays
到一個數組轉換爲隨後可被用於求和等
int sum = Arrays.stream(myIntArray)
.sum();
相乘兩個陣列一個Java 8流的新方法是有點困難,因爲我不能想到一種方法來獲得值和索引在一個流操作的同時。這意味着你可能必須流過數組的索引。
//in this example a[] and b[] are same length
int[] a = ...
int[] b = ...
int[] result = new int[a.length];
IntStream.range(0, a.length)
.forEach(i -> result[i] = a[i] * b[i]);
編輯
批評家@Holger指出,你可以用它代替forEach
這樣的map
方法:
int[] result = IntStream.range(0, a.length).map(i -> a[i] * b[i]).toArray();
51
您可以通過使用Arrays.stream()
把一個數組流:
int[] ns = new int[] {1,2,3,4,5};
Arrays.stream(ns);
一旦你有了流,你可以使用the documentation中描述的任何方法,比如sum()
或其他。您可以map
或filter
如同在Python中通過調用lambda函數,相關數據流的方法:
Arrays.stream(ns).map(n -> n * 2);
Arrays.stream(ns).filter(n -> n % 4 == 0);
一旦你完成修改您的流,然後調用toArray()
將其轉換回一個數組在其他地方使用:
int[] ns = new int[] {1,2,3,4,5};
int[] ms = Arrays.stream(ns).map(n -> n * 2).filter(n -> n % 4 == 0).toArray();
5
如果您必須處理大量數據,請小心。
int[] arr = new int[]{Integer.MIN_VALUE, Integer.MIN_VALUE};
long sum = Arrays.stream(arr).sum(); // Wrong: sum == 0
以上總和不是2 * Integer.MIN_VALUE
。 您需要在這種情況下執行此操作。
long sum = Arrays.stream(arr).mapToLong(Long::valueOf).sum(); // Correct
1
請注意,Arrays.stream(ARR)創建LongStream(或IntStream,...),而不是流使地圖功能不能用於修改的類型。這就是爲什麼提供.mapToLong,mapToObject,...函數的原因。
看一看why-cant-i-map-integers-to-strings-when-streaming-from-an-array
相關問題
- 1. Java 8迭代流操作
- 2. Java 8流:陣列上的週期性總和
- 3. 的Java 8流映射分組操作
- 4. 使用流的HashMap操作Java 8
- 5. Java流列表操作
- 6. 在Java操作流內執行操作8
- 7. 重新映射在Java中8陣列使用數學和流
- 8. Java的8個流和列表
- 9. 在Java中的2D陣列操作
- 10. 陣列操作
- 11. 陣列操作
- 12. 陣列操作
- 13. 操作主陣列
- 14. 使陣列上的.ransack(params [:q])操作
- 15. 在一維陣列上的操作
- 16. 在二維陣列上的操作
- 17. Javascript陣列元素上的操作
- 18. Java中的矩陣操作
- 19. 你將如何做一個java 8流的多個操作?
- 20. JsonPath和操作員的陣列
- 21. VBA陣列操作
- 22. 多陣列操作
- 23. Javascript陣列操作
- 24. 陣列RGB操作
- 25. Java 8並行流和ThreadLocal
- 26. 操作數和操作符的矩陣
- 27. 在陣列上執行操作
- 28. 在陣列上操作元素
- 29. Matlab的陣列操作
- 30. 在R的陣列操作
'INT []結果= IntStream.range(0,則爲a.length).MAP(I-> A [1] * B [1])的toArray();' – Holger
@Holger是的,這也可以。儘管你可能想使用'mapToInt'來避免裝箱。 – dkatzel
最後等於模擬zip,您必須爲結果預分配存儲空間。我想知道爲什麼Streams庫中沒有壓縮文件? –