arrays java 8 stream class
Java 8 е основна версия в историята на Java. Този урок обяснява различни промени в масиви в Java 8 като клас потоци и паралелно сортиране:
Много нови функции бяха представени в това издание, както вече беше обсъдено в предишния ни урок за „Характеристики на Java 8“. Нека научим за Java 8 Stream Class и метод за паралелно сортиране.
=> Внимавайте тук за простия сериал за обучение на Java.
Какво ще научите:
Масиви в Java 8
Java8 представи няколко функции, специално свързани с масиви.
Включва:
- Потоци за масиви
- Паралелно сортиране
В този урок ще обсъдим подробно тези две характеристики на Java 8.
Java 8 Stream
Java 8 е добавила клас потоци за масиви, който подобрява четливостта, както и ефективността на масивите. Преобразуването на масиви в поток също увеличава общата производителност на програмата.
В допълнение към това можете също да използвате различните методи на API на Stream, които могат да опростят картографирането и действията за филтриране на масиви.
Следните методи за претоварване могат да се използват за преобразуване на масив в поток .
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); } }
Изход:
Използвахме метода на картата, предоставен от класа Stream в горната програма. Използвахме и метода sum (), който добавя елементите в потока.
свързан възел на списък c ++
Метод Java 8 paralelSort ()
Методът “paralelSort ()” е въведен в Java 8. Това е метод на класа java.util.Arrays. Методът паралелно сортиране се използва за сортиране на масив по паралелен начин. Той използва подхода fork and join, при който масивите се раздвояват на по-малки единици, докато всяка единица е лесно управляема и след това се сортира поотделно.
След това по-малките единици се обединяват и цялата тази операция се случва паралелно. Едно от основните предимства на този метод паралелно сортиране е, че той използва многопоточност, като по този начин прави сортирането по-бързо и ефективно.
Методът паралелно сортиране () има следните претоварвания:
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, т.е. Тази програма сравнява времето, необходимо на всеки метод за сортиране на масив . Времето се изчислява за всяка итерация.
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(); } } }
Изход:
Горният изход показва сравнението на времето, взето от методите сортиране и паралелно сортиране за всяка итерация. Можете да видите ясната разлика между ефективността на метода сортиране и паралелното сортиране с метода паралелен сортиране, много по-добър от сортирането.
често задавани въпроси
В # 1) Какво представлява Arrays Stream в Java?
Отговор: Това е методът на потока от клас Arrays. Този поток на метод (масив T []) връща последователен поток от масива.
В # 2) Какво е Stream () в Java?
Отговор: Stream () в Java е представен за първи път в Java 8. Класът Stream се състои от API, използван за обработка на обекти за събиране, включително масиви.
В # 3) Как работи Java Stream?
Отговор: API на Java поток има механизъм, който може да конвертира колекции като ArrayList, Arrays и др. В поток. Те също така обработват всеки елемент от тези потоци паралелно, като използват различни предоставени методи и предават резултати.
Въпрос # 4) Каква е целта на метода MAP на Stream в Java 8?
Отговор: Методът на картата принадлежи към класа java.util.stream.Streams. Методът map прилага функция към всеки елемент от поток или го преобразува в различна стойност и я трансформира.
Въпрос # 5) Потокът по-бърз ли е от Java за цикъл?
Отговор: Да, особено паралелните потоци. Например, методът паралелно сортиране на клас масиви, който използва паралелни потоци, е по-бърз от метода на последователно сортиране, предоставен от класа масиви.
Заключение
Потоци в Java е нова функция, включена от Java 8. Потоците предоставят низ API, чиито методи могат да се използват в колекции в Java. В този урок видяхме поточни методи, които работят върху Java масиви. Видяхме и другите функции, които бяха добавени към Java масивите в издание Java 8.
Единият от тях е поток, докато другият е паралелният метод, който сортира масив по паралелен начин. Този метод е по-бърз от линейния метод на сортиране, което беше очевидно в програмата, където сравнихме двата метода.
Прочетете също = >> Промени в интерфейса в Java 8
=> Посетете тук за ексклузивната серия уроци за обучение по Java.
Препоръчително четене
- Java DataTypes, Loops, Arrays, Switch и Assertions
- Метод за сортиране на MongoDB () с примери
- Java Copy Array: Как да копирате / клонирате масив в Java
- Java Generic Array - Как да симулираме Generic Array в Java?
- Многомерни масиви в Java (2d и 3d масиви в Java)
- Урок за интерфейс на Java и абстрактен клас с примери
- Как да сортираме масив в Java - Урок с примери
- Какво представлява статичната ключова дума в Java?