Junior
Stream-ҳо дар Java барои чӣ истифода мешаванд?
sobes.tech AI
Ҷавоб аз AI
Барои коркарди декларативии ҷамъоварии маълумотҳо. Онҳо имкон медиҳанд, ки амалиётҳои пайдарпай ё параллелӣ дар рӯйхати ҷамъоварӣ анҷом дода шаванд, масалан, филтр кардан, харита (трансформация), ҷамъоварӣ ва ҷамъбасти натиҷаҳо, ки коди бештар хонданӣ ва чандир месозад.
Афзалиятҳои асосӣ:
- Декларативӣ: Ба ҷои тавсифи "чӣ" бояд анҷом дода шавад (даврҳо, итераторҳо), мо "чӣ" бояд кардро тавсиф мекунем.
- Параллелизм: Ин осон аст, ки байни коркарди пайдарпай ва параллелӣ гузариш кунед, ки барои системаҳои бисёрҷонибаро муфид аст.
- Лазӣ: Амалиётҳои миёна танҳо дар ҳолате иҷро мешаванд, ки заруранд, дар ҳузури амалиёти терминалӣ.
- Камтар навиштан: Бисёр вақт имкон медиҳад, ки миқдори кодиро нисбат ба циклҳои анъанавӣ кам кунад.
Масалан барои коркарди пайдарпай:
// Гирифтани рӯйхати номҳои истифодабарандагон, ки аз 18 сол зиёданд ва табдил додани онҳо ба ҳарфҳои калон
List<User> users = ... // Коллексияи шумо
List<String> adultUserNames = users.stream()
.filter(user -> user.getAge() >= 18) // Филтр кардани истифодабарандагон бо синну сол
.map(user -> user.getName().toUpperCase()) // Табдил додани номи ба ҳарфҳои калон
.collect(Collectors.toList()); // Ҷамъоварии натиҷаҳо ба рӯйхат
Барои коркарди параллелӣ:
// Ҷамъи параллелии рақамҳои калон дар рӯйхат
List<Long> numbers = ... // Коллексияи рақамҳо
long sum = numbers.parallelStream()
.reduce(0L, Long::sum); // Ҷамъи параллелӣ
Ин гуна, стримҳо дар Java барои муносибати функсионалӣ ва самараноки коркарди маълумот истифода мешаванд.