तो सी # में, मैं string[]
को IEnumerable<string>
के रूप में देख सकता हूं।जावा एरेज़ और जेनरिक: जावा समकक्ष सी # आईन्यूमेरेबल <T>
क्या जावा समकक्ष है?
तो सी # में, मैं string[]
को IEnumerable<string>
के रूप में देख सकता हूं।जावा एरेज़ और जेनरिक: जावा समकक्ष सी # आईन्यूमेरेबल <T>
क्या जावा समकक्ष है?
Iterable<String>
IEnumerable<string>
के बराबर है ।
अगर एरे लागू Iterable
लागू होता है तो यह टाइप सिस्टम में एक विषमता होगी। String[]
Object[]
का एक उदाहरण है, लेकिन Iterable<String>
Iterable<Object>
नहीं है। कक्षाएं और इंटरफेस अलग जेनेरिक तर्कों के साथ समान जेनेरिक इंटरफेस को लागू नहीं कर सकते हैं।
String[]
लूप के लिए बढ़ाए गए Iterable
की तरह काम करेगा।
String[]
आसानी से एक Iterable
में बदल सकता है:
Iterable<String> strs = java.util.Arrays.asList(strArray);
सरणियों से अधिक संग्रह (गैर पुरातन के लिए वैसे भी) पसंद करते हैं। संदर्भ प्रकारों की Arrays थोड़ा अजीब हैं, और जावा 1.5 के बाद शायद ही कभी इसकी आवश्यकता है।
Iterable <T>
आप Iterable<String>
के लिए देख रहे हैं?
Iterable<T> <=> IEnumerable<T>
Iterator<T> <=> IEnumerator<T>
मेरा मानना है कि जावा समतुल्य Iterable<String>
है। वैसे भी तत्व से अधिक लूप हालांकि String[]
इसे लागू नहीं है, आप कर सकते हैं:
String[] strings = new String[]{"this", "that"};
for (String s : strings) {
// do something
}
तुम सच में कुछ है कि Iterable<String>
लागू करता है की जरूरत है, तो आप ऐसा कर सकते हैं:
String[] strings = new String[]{"this", "that"};
Iterable<String> stringIterable = Arrays.asList(strings);
Iterable<T>
ठीक है, लेकिन एक छोटी सी समस्या है। इसका उपयोग stream()
i.e lambda अभिव्यक्तियों में आसानी से नहीं किया जा सकता है।
यदि आप ऐसा चाहते हैं, तो आपको इसे स्प्लिटरेटर मिलना चाहिए, और StreamSupport()
कक्षा का उपयोग करना चाहिए।
_why_ आप Iterable और Iterable
ठीक है, तो अब कमरे में 500-एलबी गोरिल्ला को संबोधित करते हैं। आप 'Iterable' का उपयोग कैसे करते हैं? जावा में समकक्ष 'उपज वापसी 'कथन क्या है? –
BrainSlugs83
@ BrainSlugs83 मुझे लगता है कि यह एक अलग सवाल है। –