Нови додатни пакет у Јави 8, познат као јава.утил.стреам је додат за корисницима за ефикасно искуство програмирања. Ток се може дефинисати као низ објеката који подржавају више метода. У овом чланку бисмо истраживали Стреам у
Следећи путокази ће бити обухваћени овим чланом,
Пре него што започнемо са овим чланком о Стреам Ин Јава, погледајмо неке важне функције,
повезана листа у ц програму
Стреам у Јави: Карактеристике
- Ток није структура података и не чува елементе. Колекције, низови или И / О канали одакле узимају улазне податке.
- Извор тока остаје неизмењен након извођења операција на њему. На пример, филтрирањем тока једноставно се ствара нови ток без филтрираних елемената, уместо да се модификује оригинални ток.
- Операције агрегирања као што су филтрирање, смањивање, подударање, проналажење итд. Подржани су у току.
- Лењост се може сматрати особином тока, јер он процењује кодове само када је то потребно.
- Посета елемената присутних у току може се обавити само једном током живота потока. Мора се створити нови ток да би се поново посетили исти елементи присутни у извору.
Настављамо са овим чланком о Стреаму на Јави
Генерисање токова
Потоци се могу генерисати следећим методама:
- ток () - Враћен је секвенцијални ток.Збиркасе сматра извором.
- параллелСтреам () - Враћа се паралелни ток. Збирка се сматра извором.
Листа стрингова = Арраис.асЛист ('Здраво', '', 'Здраво', 'Хола', 'Боњоур', '', 'Намасте') Листа филтрирана = стрингс.стреам (). Филтер (стринг ->! Стринг. исЕмпти ()). цоллецт (Цоллецторс.тоЛист ())
Настављамо са овим чланком о Стреаму на Јави
Операције на потоцима:
Интермедиате Оператионс:
Мапа
Елементи присутни у колекцији могу се пресликати на друге објекте према предикату који је прослеђен као аргумент. Следећи пример се користи за приказ јединствених квадрата бројева методом мапе.
Листа нум = Арраис.асЛист (5,4,4,2,3,3) Квадрати листе = нум.стреам (). Мап (и -> и * и) .дистинцт (). Цоллецт (Цоллецторс.тоЛист ())
филтер
Елементи се овом методом могу уклонити на основу критеријума.
Име листе = Арраис.асЛист ('Субота', 'Недеља', 'Четвртак') Листа рес = наме.стреам (). Филтер (с-> с.стартсВитх ('С')). Цоллецт (Цоллецторс.тоЛист () )
сортирано
Ток се може сортирати помоћу ове методе.
Име листе = Арраис.асЛист ('Субота', 'Недеља', 'Четвртак') Листа рес = наме.стреам (). Сортед (). Цоллецт (Цоллецторс.тоЛист ())
Стреам ин Јава: Терминал Оператионс:
сакупљати
Резултат обраде на елементима тока може се комбиновати помоћу операције сакупљања.
Листа нум = Арраис.асЛист (4,3,2,5,6) Постави рес = нум.стреам (). Мап (и-> и * и) .цоллецт (Цоллецторс.тоСет ())
за сваки
Овај метод се користи за итерацију кроз сваки елемент присутан у току.
Листа нум = Арраис.асЛист (4,3,2,5) нум.стреам (). Мап (к-> к * к) .форЕацх (и-> Систем.оут.принтлн (и))
смањити
Елементи тока се овом методом могу свести на једну вредност.
Листа нум = Арраис.асЛист (4,3,2,5) инт евен = нум.стреам (). Филтер (к-> к% 2 == 0) .редуце (0, (рес, и) -> рес + и)
Променљивој рес првобитно се додељује вредност 0 и додаје јој се и.
Настављамо са овим чланком о Стреаму на Јави
Филтрирање
Код се може филтрирати методом стрима. У следећем примеру цена инструмената се филтрира.
импорт јава.утил. * импорт јава.утил.стреам.Цоллецторс цласс Инструмент {инт нум Стринг наме флоат прице публиц Инструмент (инт нум, Стринг наме, флоат прице) {тхис.нум = нум тхис.наме = наме тхис.прице = цена}} тест јавне класе {публиц статиц воид маин (Стринг [] аргс) {Лист инструментсЛист = нев АрраиЛист () // Додавање производа инструментсЛист.адд (нев Инструмент (1, 'Гуитар', 15000ф)) инструментсЛист.адд (ново Инструмент (2, 'Пиано', 18000ф)) инструментсЛист.адд (нови Инструмент (3, 'Флаута', 15000ф)) инструментсЛист.адд (нови Инструмент (4, 'Бубњеви', 48000ф)) инструментсЛист.адд (нови Инструмент ( 5, 'Укулеле', 32000ф)) Листа ИнструментПрицеЛист2 = инструментсЛист.стреам () .филтер (п -> п.прице> 30000) // филтрирање података .мап (п-> п.прице) // преузимање цене .цоллецт ( Цоллецторс.тоЛист ()) // прикупљање као листа Систем.оут.принтлн (ИнструментПрицеЛист2)}}
Излаз:
[48000,0, 32000,0]
Настављамо са овим чланком о Стреаму на Јави
Итерација:
Итерација се може извести коришћењем тока у јави.
импорт јава.утил.стреам. * тест јавне класе {публиц статиц воид маин (Стринг [] аргс) {Стреам.итерате (1, елемент-> елемент + 1) .филтер (елемент-> елемент% 4 == 0). лимит (6) .форЕацх (Систем.оут :: принтлн)}}
Излаз:
4
8
12
како се користи визуелни студио
16
двадесет
24
Погледајмо још један пример да бисмо ефикасније разумели концепт Стреам у јави.
Пример:
како се користе семафори у јави
импорт јава.утил. * импорт јава.утил.стреам. * тест јавне класе {публиц статиц воид маин (Стринг аргс []) {// стварање листе целих бројева Листа нум = Арраис.асЛист (6,7,8,9 ) // коришћењем методе мапе Листа квадрата = нум.стреам (). мап (и -> и * и). цоллецт (Цоллецторс.тоЛист ()) Систем.оут.принтлн (квадрати) // стварање листе Стринг Лист даис = Арраис.асЛист ('петак', 'субота', 'недеља') // метода филтрирања Листа рес = даис .стреам (). филтер (с-> с.стартсВитх ('С')). цоллецт (Цоллецторс.тоЛист ()) Систем.оут.принтлн (рес) // сортирана метода Листа дисплаи = даис.стреам (). сортед (). цоллецт (Цоллецторс.тоЛист ()) Систем.оут.принтлн (дисплаи) / / стварање листе целих бројева Листа број = Арраис.асЛист (6,9,5,7,1) // метода прикупљања враћа скуп Сет скСет = нумбер.стреам (). мап (и-> и * и) .цоллецт (Цоллецторс.тоСет ()) Систем.оут.принтлн (скСет) // форЕацх метода нум.стреам (). Мап (и-> и * и) .форЕацх (к-> Систем.оут.принтлн (к)) / / смањи метод инт евен = нум.стреам (). филтер (к-> к% 2 == 0) .редуце (0, (ресулт, и) -> ресулт + и) Систем.оут.принтлн (евен)}}
Излаз:
[36, 49, 64, 81]
[Субота Недеља]
[Петак Субота Недеља]
[81, 49, 1, 36, 25]
36
49
64
81
14
Потоци омогућавају кориснику ефикасно извршавање операција на елементима.
Тако смо дошли до краја овог чланка о „Стреам ин Јава“. Ако желите да сазнате више, погледајте Јава Траининг од Едуреке, поуздане компаније за учење на мрежи. Едурекин курс за обуку и сертификацију Јава Ј2ЕЕ и СОА осмишљен је тако да вас оспособи за основне и напредне Јава концепте заједно са разним Јава оквирима попут Хибернате & Спринг.
Имате питање за нас? Молимо вас да га спомињете у одељку за коментаре овог блога и јавићемо вам се што је пре могуће.