2010-01-28 8 views
14

प्रस्तुति के 1 कहते हैं, "इन विधियों आलसी हैं!"अधिकांश Iterators और Iterables विधियों LAZY हैं! इसका क्या मतलब है

Iterable transform(Iterable, Function)* 
Iterable filter(Iterable, Predicate)* 
T find(Iterable<T>, Predicate) 
Iterable concat(Iterable<Iterable>) 
Iterable cycle(Iterable) 
T getOnlyElement(Iterable<T>) 
Iterable<T> reverse(List<T>) 

किसी की मदद कर सकते हैं मुझे समझने क्या वे यह मतलब, मान लीजिए कि मैं Persons का एक संग्रह है और मैं एक फिल्टर केवल जिन व्यक्तियों के अंतिम नाम के डीओई है वापस जाने के लिए लागू होते हैं।

तो इसका मतलब यह है कि "फ़िल्टरिंग केवल doeOnly.next() करने के लिए पहले फोन पर क्या होता है?"

List<Person> persons= .... 
Iterable doeOnly= Iterables.filter(persons,DOE_AS_LAST_NAME_PREDICATE); 
+0

फ़िल्टरिंग पहले कॉल पर 'doeOnly.hasNext() '' '' '(' ''' नहीं है, क्योंकि अगर केवल एक तत्व शेष है लेकिन यह भविष्यवाणी में विफल रहता है तो 'हैनक्स्ट()' को झूठा लौटा देना चाहिए, लेकिन फिल्टर नहीं जानता है कि जब तक यह गैर-मिलान तत्व प्राप्त नहीं कर लेता है। – finnw

उत्तर

28

इसका मतलब है कि डेटा आपके द्वारा उसका अनुरोध के रूप में फ़िल्टर किया जाता है - यह आपकी सूची के माध्यम से तुरंत जाना नहीं है, और फ़िल्टर किए गए डेटा की एक नई सूची का निर्माण। इसके बजाय, जब आप iterator.next() (उदा। स्वचालित रूप से लूप के लिए उन्नत में) कहते हैं, तो इटेटरेटर अगले डेटा आइटम के लिए अपने अपस्ट्रीम डेटा स्रोत (आपके संग्रह) से पूछेगा। फिर यह फ़िल्टर के खिलाफ मैच करने का प्रयास करेगा। यदि यह इससे मेल खाता है, तो वह उस आइटम को वापस कर देगा। अन्यथा, यह संग्रह से किसी अन्य आइटम के लिए पूछेगा, जब तक कि यह आइटम से बाहर नहीं हो जाता है या एक मैच नहीं मिलता है।

तब जब आप अगले अगले आइटम के लिए पूछें, तो यह कहां से छोड़ा जाएगा।

दूसरे शब्दों में, यह सिर्फ मतलब नहीं है "फ़िल्टरिंग केवल doeOnly.next() करने के लिए पहली कॉल पर होता है" - इसका अर्थ है "फ़िल्टरिंग होता iterator.next() करने के लिए प्रत्येक फोन पर" जहां iteratordoeOnly.iterator() बुला का परिणाम है।

+0

सहायक परिभाषाएं: http://en.wikipedia.org/wiki/Lazy_evaluation। –

+0

thx दोनों प्रतिक्रियाओं के लिए ... Google- संग्रह का उपयोग आवेदक या देरी मूल्यांकन –

+0

मैं फिल्टर और अन्य तरीकों में आलस्य को समझने के रूप में आलसी समझता हूं ... लेकिन आलसी wrt ढूंढने और प्राप्त करने के बारे में कैसे समझाया जा सकता है केवल –

संबंधित मुद्दे