Kotlin Academy · पाठ

Pipelines को श्रृंखलाबद्ध करना और Sequence से Intermediate Lists से बचना

बहु-चरणीय pipelines बनाएँ और lazy evaluation के लिए Sequence का उपयोग करें।

पाठ 4, कुल 4 में से13 चरण

Pipelines को श्रृंखलाबद्ध करना और Sequence से Intermediate Lists से बचना, CoddyKit पर Kotlin Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Kotlin Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Kotlin Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

समस्या: मध्यवर्ती सूचियाँ

संग्रह की हर क्रिया (छँटाई, मानचित्रण आदि) एक नई सूची बनाती है। बड़े संग्रहों या लंबी श्रृंखलाओं के लिए इससे मेमोरी और समय की बर्बादी होती है।

तत्काल बनाम विलंबित मूल्यांकन

संग्रह की क्रियाएँ तत्काल होती हैं: अगली क्रिया शुरू होने से पहले हर चरण सूची को पूरी तरह प्रोसेस करता है। Sequence की क्रियाएँ विलंबित होती हैं: अगले तत्व पर जाने से पहले एक तत्व को सभी चरणों से गुज़ारा जाता है।

Sequence में बदलना

तत्काल (सूची) प्रोसेसिंग से विलंबित (अनुक्रम) प्रोसेसिंग पर जाने के लिए asSequence() कॉल कीजिए।
val result = (1..1_000_000)
    .asSequence()
    .filter { it % 2 == 0 }
    .map { it * it }
    .take(5)
    .toList()
println(result)  // [4, 16, 36, 64, 100]

Sequence विलंबित है: अंतिम क्रिया तक कोई काम नहीं

जब तक आप किसी अंतिम ऑपरेटर (toList, first, sum आदि) को कॉल नहीं करते, तब तक कोई गणना नहीं होती।
val seq = generateSequence(1) { it + 1 }  // infinite!
    .filter { it % 3 == 0 }
    .map { it * it }
val first5 = seq.take(5).toList()
println(first5)  // [9, 36, 81, 144, 225]

generateSequence: अनंत अनुक्रम

generateSequence विलंबित अनंत अनुक्रम बनाता है।
val fibonacci = generateSequence(Pair(0, 1)) { (a, b) -> Pair(b, a + b) }
    .map { it.first }
val first10 = fibonacci.take(10).toList()
println(first10)  // [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

sequence बिल्डर

sequence { } बिल्डर, जो मान निकालने की सुविधा देता है, कस्टम विलंबित अनुक्रम बनाता है।
val evens = sequence {
    var n = 0
    while (true) {
        yield(n)
        n += 2
    }
}
println(evens.take(5).toList())  // [0, 2, 4, 6, 8]

Sequence का उपयोग कब करें

Sequence का उपयोग तब कीजिए जब संग्रह बड़ा हो (1000 से अधिक तत्व), आप कई क्रमिक क्रियाओं का उपयोग कर रहे हों और/या आपको परिणामों के केवल छोटे उपसमुच्चय की आवश्यकता हो।

Sequence का उपयोग कब न करें

छोटे संग्रहों (100 तत्वों से कम) के लिए अनुक्रम अतिरिक्त खर्च जोड़ते हैं। इटरेटर-आधारित तंत्र छोटी श्रृंखलाओं के लिए धीमा होता है।
// Overkill for small list:
listOf(1, 2, 3).asSequence().map { it * 2 }.toList()
// Just use:
listOf(1, 2, 3).map { it * 2 }

Sequence की अंतिम क्रियाएँ

अंतिम क्रियाएँ प्रोसेसिंग शुरू करती हैं। सामान्य क्रियाएँ हैं: toList(), first(), last(), गिनती, sum(), कोई, all(), कोई नहीं।
val s = (1..100).asSequence().filter { it % 7 == 0 }
println(s.first())          // 7
println(s.count())          // 14
println(s.sum())            // 728

स्थिति-युक्त बनाम स्थिति-रहित क्रियाएँ

कुछ अनुक्रम क्रियाएँ स्थिति-युक्त होती हैं (क्रमबद्ध करना, अलग-अलग करना) — परिणाम देने से पहले उन्हें सभी तत्व देखने पड़ते हैं। वे विलंबित मूल्यांकन को तोड़ देती हैं।
val s = (1..10).asSequence()
    .filter { it > 3 }   // stateless: lazy
    .sorted()            // stateful: must see all elements
    .take(3).toList()
println(s)  // [4, 5, 6]

constrainOnce: एकल-इटरेशन सुरक्षा

किसी अनुक्रम को कई बार इटरेट किए जाने पर त्रुटि देने वाला बनाने के लिए constrainOnce() का उपयोग कीजिए — यह स्ट्रीम के लिए उपयोगी है।
val seq = generateSequence(1) { if (it < 5) it + 1 else null }
    .constrainOnce()
val first = seq.toList()   // OK
// val second = seq.toList()  // IllegalStateException!

त्वरित जाँच

Sequence तत्वों की प्रोसेसिंग कब शुरू करता है?

पुनरावलोकन

अनुक्रम विलंबित होते हैं — अंतिम क्रिया होने तक कोई काम नहीं होता। कई क्रमिक क्रियाओं वाले बड़े संग्रहों के लिए asSequence() का उपयोग कीजिए। generateSequence और sequence { } अनंत विलंबित स्ट्रीम बनाते हैं। अंतिम क्रियाएँ प्रोसेसिंग शुरू करती हैं।
शुरुआत निःशुल्क

एआई शिक्षक के साथ Kotlin सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
51
पाठ
203

अक्सर पूछे जाने वाले प्रश्न

क्या “Pipelines को श्रृंखलाबद्ध करना और Sequence से Intermediate Lists से बचना” पाठ निःशुल्क है?

हाँ — Kotlin Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Pipelines को श्रृंखलाबद्ध करना और Sequence से Intermediate Lists से बचना” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Kotlin Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Pipelines को श्रृंखलाबद्ध करना और Sequence से Intermediate Lists से बचना” में मैं क्या सीखूँगा?

बहु-चरणीय pipelines बनाएँ और lazy evaluation के लिए Sequence का उपयोग करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Kotlin Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Kotlin Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Kotlin Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“Pipelines को श्रृंखलाबद्ध करना और Sequence से Intermediate Lists से बचना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Kotlin Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Kotlin Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. map और flatMap: हर तत्व का रूपांतरण
  2. filter, filterNot और partition
  3. fold, reduce और runningFold
  4. Pipelines को श्रृंखलाबद्ध करना और Sequence से Intermediate Lists से बचना
← Kotlin Academy पर वापस जाएँ