arrays java 8 stream class
Java 8 стала основним випуском в історії Java. Цей підручник пояснює різні зміни масивів у Java 8, як клас потоків та паралельне сортування:
Багато нових функцій було представлено у цьому випуску, як це вже обговорювалось у нашому попередньому підручнику “Особливості Java 8”. Давайте дізнаємося про клас потоку Java 8 та метод паралельного сортування.
=> Тут слідкуйте за простими навчальними серіями Java.
Що ви дізнаєтесь:
Масиви в Java 8
Java8 представив кілька функцій, спеціально пов'язаних з масивами.
Це включає:
- Потоки для масивів
- Паралельне сортування
У цьому підручнику ми детально обговоримо ці дві особливості Java 8.
Потік Java 8
Java 8 додала клас потоку для масивів, що покращує читабельність, а також ефективність масивів. Перетворення масивів у потік також збільшує загальну продуктивність програми.
На додаток до цього, ви також можете використовувати різні методи Stream API, які можуть спростити відображення та фільтрування дій над масивами.
Наступний метод перевантажень може бути використаний для перетворення масиву в потік .
Stream stream(T() array) IntStream stream(int() array) LongStream stream(long() array) DoubleStream stream(double() array)
Наступна програма показує реалізацію використання потоків з масивами. Ця програма показує порівняння ітераційного підходу та підходу Streams. Пізніше сума елементів у масиві обчислюється за допомогою Ітерації та Потоків та обчислюється середнє значення.
import java.util.Arrays; class Main { public static void main(String() args) { int intArray() = {5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100}; //calculate sum using iterative method int sum = 0; for (int i = 0; i System.out.print(e + ' ')); } }
Вихід:
Наведений вище результат показує середню ітерацію та підхід. Оскільки елементів менше, середнє значення однакове, але оскільки елементи в масиві збільшуються, ітераційний підхід стає повільнішим.
Наступний приклад програмування показує, як масив перетворюється на цілочисельний потік, а потім за допомогою методу map потоку пов'язує елементи масиву з випадковими значеннями, а потім додає ці елементи. Тоді програма друкує суму всіх елементів у цілочисельному потоці .
import java.util.Arrays; class Main { public static void main(String() args) { //declare array of ints int() ints = new int(100); //fill array with value 10 Arrays.fill(ints, 10); //maps array stream to random numbers and calculates sum of the elements int sum = Arrays.stream(ints) .map(i -> (int) (Math.random() * i)) .sum(); //print the sum System.out.println('The sum of the random array elements: ' + sum); } }
Вихід:
Ми використовували метод map, який наданий класом Stream у наведеній вище програмі. Ми також використовували метод sum (), який додає елементи в потік.
виявлення витоків пам’яті c ++
Метод Java 8 паралельного сортування ()
Метод “paralleSort ()” представлений у Java 8. Це метод класу java.util.Arrays. Метод паралельного сортування використовується для сортування масиву паралельним способом. Він використовує підхід fork and join, при якому масиви роздвоюються на менші одиниці, доки кожен блок не буде легко керованим, а потім сортується окремо.
Потім менші блоки об’єднуються, і вся ця операція відбувається паралельно. Однією з головних переваг цього методу паралельного сортування є те, що він використовує багатопотоковість, завдяки чому сортування відбувається швидше та ефективніше.
Метод paralelSort () має такі перевантаження:
public static void parallelSort (Object obj())
Зазначений вище прототип методу використовується для сортування масиву за зростанням.
public static void parallelSort (Object obj(), int fromIndex, int toIndex)
Зазначене перевантаження використовується для сортування елементів у зазначеному діапазоні від ‘fromIndex’ до ‘toIndex’ у масиві.
Наступна програма Java демонструє метод паралельного сортування для сортування масиву.
import java.util.Arrays; public class Main { public static void main(String() args) { // Creating an array int numArray() = { 54,34,25,13,65,37,85,47,26 }; // print the original Array System.out.print('Original Unsorted Array: '); // iterate the array using streams Arrays.stream(numArray) .forEach(num ->System.out.print(num + ' ')); System.out.println(); // Using parallelSort() method to sort array Arrays.parallelSort(numArray); // Print sorted Array System.out.print('Array sorted using parallelSort: '); Arrays.stream(numArray) .forEach(num->System.out.print(num + ' ')); } }
Вихід:
У наведеній вище програмі вхідний масив сортується методом паралельного сортування і виводиться вихідний результат.
Наступна програма порівнює два методи сортування, надані класом Arrays, тобто метод sort (), який є лінійним методом сортування та paralleSort (). Ця програма порівнює час, необхідний кожному методу для сортування масиву . Час обчислюється для кожної ітерації.
import java.util.Arrays; import java.util.Random; public class Main { public static void main(String() args) { // Create an array int numArray() = new int(100); System.out.println('Iteration#' + ' ' + 'Serial Sort :Time(in ns)' + ' ' + 'Parallel Sort :Time(in ns)'); // Iterating Loop till i = 1000 // with interval of 10 for (int i = 0; i <100; i += 10) { System.out.print(' ' + (i / 10 + 1) + ' '); // Array generation using random function Random rand = new Random(); for (int j = 0; j < 100; j++) { numArray(j) = rand.nextInt(); } // Arrays.sort() method: Start and End Time long startTime = System.nanoTime(); // Call Serial Sort method Arrays.sort Arrays.sort(numArray); long endTime = System.nanoTime(); // Print Serial Sort results System.out.print((endTime - startTime) + ' '); // Arrays.parallelSort() start and end time startTime = System.nanoTime(); // call Parallel Sort method Arrays.parallelSort Arrays.parallelSort(numArray); endTime = System.nanoTime(); // Print Parallel Sort results System.out.println(' ' + (endTime - startTime)); System.out.println(); } } }
Вихід:
Наведений вище результат показує порівняння часу, зайнятого методами сортування та паралельного сортування для кожної ітерації. Ви можете бачити чітку різницю між ефективністю сортування та методом паралельного сортування з методом паралельного сортування набагато кращим, ніж сортування.
Часті запитання
Q # 1) Що таке Arrays Stream у Java?
Відповідь: Це метод потоку класу Arrays. Цей потік методу (масив T ()) повертає послідовний потік з масиву.
Q # 2) Що таке Stream () у Java?
Відповідь: Stream () на Java вперше був представлений на Java 8. Клас Stream складається з API, який використовується для обробки об’єктів колекції, включаючи масиви.
Запитання №3) Як працює Java Stream?
Відповідь: API потоку Java має механізм, який може перетворювати колекції, такі як ArrayList, Arrays тощо в потік. Вони також паралельно обробляють кожен елемент цих потоків за допомогою різних наданих методів і передають результати.
Q # 4) Яка мета методу MAP Stream у Java 8?
Відповідь: Метод map належить до класу java.util.stream.Streams. Метод map застосовує функцію до кожного елемента потоку або відображає її до іншого значення та перетворює.
Q # 5) Чи швидше Stream, ніж для циклової Java?
Відповідь: Так, особливо паралельні потоки. Наприклад, метод ПаралельнийСорт класу масивів, що використовує паралельні потоки, швидший, ніж метод послідовного сортування, передбачений класом масивів.
Висновок
Потоки в Java - це нова функція, включена з Java 8. Потоки надають рядковий API, методи якого можна використовувати в колекціях на Java. У цьому посібнику ми бачили потокові методи, які працюють на масивах Java. Ми також бачили інші функції, які були додані до масивів Java у випуску Java 8.
Один з них є потоком, а інший - паралельним методом Сортування, який сортує масив паралельно. Цей метод швидший за лінійний метод сортування, що було видно в програмі, де ми порівнювали обидва методи.
Також читайте = >> Зміни інтерфейсу в Java 8
=> Завітайте сюди, щоб ознайомитись із ексклюзивною серією навчальних посібників Java.
Рекомендована література
- Java-типи даних, цикли, масиви, комутатори та твердження
- Метод сортування MongoDB () із прикладами
- Копіювальний масив Java: Як скопіювати / клонувати масив у Java
- Загальний масив Java - Як імітувати загальні масиви в Java?
- Багатовимірні масиви на Java (2d та 3d масиви на Java)
- Інтерфейс Java та підручник з абстрактних класів із прикладами
- Як відсортувати масив на Java - Підручник з прикладами
- Що таке статичне ключове слово в Java?