Ponieważ wiele liczb całkowitych może przepełnić się po zsumowaniu, potrzebowałem długiego strumienia do wykonania zadania, ale nie zaakceptuje tablicy int
. Jak mogę przekonwertować każdy element w czasie przesyłania strumieniowego, zamiast korzystać z tablicy long
?Java LongStream do sumowania elementów tablicy int
// arr is an int[]
LongStream s = Arrays.stream(arr); // error
result = s.reduce(0, Long::sum);
Edytuj: wygląda na to, że strumień całkowity zamieniany jest na długi, używając jego metody, jak w odpowiedzi Tagira Valeeva.
LongStream asLongStream();
to robi kopię tablicy do tymczasowego długa tablica, jak sądzę. Dzięki. –
@huseyintugrulbuyukisik, Oczywiście, że nie kopiuje. –
Kiedy używam wersji równoległej, oblicza ona początkowo 5ms (16M elementów), a następnie w kilka sekund później każda suma zabiera nagle 15 ms. Czy jest to konsekwencja niektórych śmieci? –