Sobes.tech
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 барои муносибати функсионалӣ ва самараноки коркарди маълумот истифода мешаванд.