Sobes.tech
Junior — Middle

Ի՞նչ վարքագիծ է արտահայտվում Stream API-ում, եթե բացակայում է վերջնական օպերացիայի կանչը։

sobes.tech AI

Պատասխան AI-ից

Java Stream API- ում գործողությունները բաժանվում են միջնորդական և վերջնական։ Միջնորդական գործողությունները (օրինակ, filter, map) հապաղում են և չեն կատարվում մինչև որ չկոչվի վերջնական գործողությունը (օրինակ, collect, forEach

Եթե վերջնական գործողությունը չի կոչվում, ապա հոսքը չի մշակվի և ոչ մի հաշվարկ չի կատարվի։ Սա նշանակում է, որ միջնորդական գործողությունների շղթան պարզապես կստեղծի հոսքի նկարագրությունը, բայց չի իրականացնում այն։

Օրինակ՝

Stream.of(1, 2, 3, 4)
    .filter(n -> n % 2 == 0)
    .map(n -> n * 2);
// Ոչ մի տարր չի մշակվի, քանի որ չկա վերջնական գործողություն

Համագործարկելու համար անհրաժեշտ է կանչել վերջնական գործողություն՝

List<Integer> result = Stream.of(1, 2, 3, 4)
    .filter(n -> n % 2 == 0)
    .map(n -> n * 2)
    .collect(Collectors.toList());

Բացակայում է վերջնական գործողությունը, հոսքը չի գործարկվի։