Middle
Javaнын жаңы версиясында эмне үчүн агымдар колдонулат?
sobes.tech AI
AIден жооп
Javaнын жаңы версияларында (Java 8ден баштап) стримдердин колдонулушу натыйжалуулук, коддун окуулуулугу жана маалыматтарды параллелдүү иштетүү менен байланыштуу бир катар себептерге байланыштуу:
- Функционалдык программалоо: 스트римдер кодду көбүрөөк декларативдүү стилде жазууга мүмкүндүк берет, анда эмне кылуу керектигине көңүл бурулат, кандай эмес. Бул окуулуулукту жана колдоого алууну жакшыртат.
- Параллелдүү иштетүү: 스트римдер коллекциялардын иштетүү операцияларын оңой эле параллелдөө үчүн
parallelStream()колдонулат. JVM маалыматтарды бөлүү жана натыйжаларды бириктирүү менен иштейт, бул көптөгөн жиптер менен иштөө программаларын жөнөкөйлөтөт. - Эффективдүүлүк: Lazy evaluation (аялдуу баалоо) 스트римдерде операциялар зарылчылык болсо гана аткарылат, бул кошумча чыгымдарды азайтат. Intermediate-операциялар (map, filter) терминалдык операция (collect, forEach) чакырылгандан кийин гана ишке ашат.
- Коллекциялардын иштетүүнү жакшыртуу: Стримдер стандарттык, жогорку деңгээлдеги операциялардын топтомун сунуштайт, алар фильтрлөө, картага салуу, маалыматтарды топтоо үчүн колдонулат, бул циклдер менен жазылган шаблондук коддун санын азайтат.
- Immutable Operations: Стримдер баштапкы коллекцияны өзгөртпөйт, ал түзүлгөн коллекцияны колдойт, иммутабелдик принциптерин сактайт жана ката кетирүүнү жеңилдетет.
// Стримдерди фильтрлөө жана картага салуу мисалы
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");
List<String> filteredNames = names.stream() // Стрим түзүү
.filter(name -> name.startsWith("C")) // Фильтрлөө
.map(String::toUpperCase) // Картага салуу
.collect(Collectors.toList()); // Натыйжаны жаңы тизмеге топтоо
System.out.println(filteredNames); // Чыгуу: [CHARLIE]
Параллелдүү 스트римдер:
// Параллелдүү иштетүүнүн мисалы
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
int sum = numbers.parallelStream() // Параллелдүү 스트рим түзүү
.mapToInt(Integer::intValue) // IntStreamке айландыруу
.sum(); // Жыйынтыктоо
System.out.println(sum); // Чыгуу: 55 (көп ядролуу системдерде тезирээк эсептелиши мүмкүн)