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?