Junior
Ҳикояи асосии API Stream дар Java чист?
sobes.tech AI
Ҷавоб аз AI
Асосии идеяи API Stream дар он аст, ки роҳи декларативии коркарди коллектсияҳои маълумотро пешниҳод мекунад. Ба ҷои муносибати императивӣ бо такрор ва назорати равшан дар доираи циклҳо ва ҳолатҳо, стримҳо имкон медиҳанд, ки чӣ бояд бо маълумотҳо анҷом дода шавад (филтр кардан, табдил додан, ҷамъбаст кардан), дар ҳоле ки чӣ гуна онро иҷро кардан дар API мемонад.
Концепсияҳои асосӣ:
- Нестшавандагӣ: Стримҳо манбаи маълумоти аслӣ тағир намедиҳанд. Операсияҳои стримҳо натиҷаҳои нав ё натиҷаҳоро месозанд.
- Эҳсоси бефосила: Бисёре аз операсияҳои стрим, мисли
filter()ваmap(), операсияҳои миёна мебошанд. Онҳо то даъвати операсияи терминалӣ, мислиcollect()ёforEach(), иҷро намешаванд. Ин имкон медиҳад, ки иҷрои оптималӣ шавад. - Пайплайн: Операсияҳои стрим метавонанд ба пайплайн пайваст шаванд. Ҳар як унсур ба пайплайн дар тартиб ё параллӣ мегузарад.
- Коркарди параллелӣ: Стримҳо барои осон кардани коркарди параллелии маълумот тарҳрезӣ шудаанд, аксар вақт бо тағироти ками коди (
parallelStream()).
Фоидаҳо:
- Коди бештар хондашаванда ва ифодаёбанда барои операсияҳои мураккаб бо коллектсияҳо.
- Параллелсозӣ осон аст.
- Нақли кодҳои boilerplate, ки бо такрорҳо алоқаманданд, нест карда мешаванд.
// Мисол: Филтр кардан ва табдил додани рӯйхати сатрҳо
List<String> номҳо = Arrays.asList("Alice", "Bob", "Charlie", "David");
List<Integer> дарозӣ = номҳо.stream()
.filter(ном -> ном.startsWith("A")) // Операсияи миёна
.map(String::length) // Операсияи миёна
.collect(Collectors.toList()); // Операсияи терминалӣ
// Дарозӣ хоҳад дошт [5]