क्या जावा के पास पाइथन की range(int, int)
विधि के बराबर है?जावा: पायथन की सीमा (int, int) के समतुल्य?
उत्तर
Guava भी कुछ इसी तरह प्रदान करता है पायथन के range
रहे हैं:
return new AbstractIterator<Integer>() {
int next = getStart();
@Override protected Integer computeNext() {
if (isBeyondEnd(next)) {
return endOfData();
}
Integer result = next;
next = next + getStep();
return result;
}
};
मेरी इच्छा है कि मैंने अपनी खुद की जेनेरिक रेंज लागू करने से पहले इसे देखा होगा। यह अच्छा है लेकिन अभी भी एक और अनुस्मारक है कि कितनी गुंजाइश जावा की तुलनात्मक रूप से अधिक कार्यात्मक भाषाओं से की जा सकती है। –
'रेंज # asSet' को बहिष्कृत किया गया प्रतीत होता है। अब आपको यह करने की ज़रूरत है: 'ContiguousSet.create (रेंज.क्लोज्ड (कम, उच्च), DiscreteDomain.integers()) ' –
इसका उपयोग करने के लिए मुझे किस लाइब्रेरी को आयात करने की आवश्यकता है? –
public int[] range(int start, int length) {
int[] range = new int[length - start + 1];
for (int i = start; i <= length; i++) {
range[i - start] = i;
}
return range;
}
(लांग जवाब सिर्फ "नहीं" कहने के लिए)
इसके अलावा, पाइथन 3 में "रेंज" और पाइथन 2 में पसंदीदा "xrange" देखें "लाइव" ऑब्जेक्ट जो इसमें मौजूद प्रत्येक आइटम के लिए स्मृति का उपयोग नहीं करता है। यह जावा में लागू करने के लिए भी बड़ा होगा। – jsbueno
public int[] range(int start, int stop)
{
int[] result = new int[stop-start];
for(int i=0;i<stop-start;i++)
result[i] = start+i;
return result;
}
किसी भी वाक्य रचना या शैली त्रुटियों माफ कर दो; मैं आमतौर पर सी # में कार्यक्रम।
ने दिया कि विवियन बरौसे ने आपको जवाब में हरा दिया, आप किसी भी डुप्ली से बचने के लिए अपना क्यों नहीं हटाते हैं। जब तक कि आप वास्तव में इसे अच्छी तरह से मांस से बाहर करने की योजना नहीं बनाते। – aaronasterling
वे समान हैं; मुझे लगता है कि मेरा थोड़ा और पठनीय है। "लंबाई" का उनका उपयोग भ्रामक है, और मुझे नहीं लगता कि वह पाइथन स्पेक से मिलता है (इसमें ऊपरी बाउंड शामिल है, जो http://www.network-theory.co.uk/docs/pytut/rangeFunction.html कहता है पायथन में नहीं होता है)। अगर आपको लगता है कि कोई एक डुप्ली है, तो मेरा मानना है कि आपके पास इससे निपटने के लिए पर्याप्त प्रतिष्ठा है। – KeithS
यदि आप इसका उपयोग करना चाहते हैं जैसे कि आप पाइथन लूप में करेंगे, तो जावा उस कथन के साथ अच्छी तरह से loops, जो इस उद्देश्य के लिए इस संरचना को अनावश्यक प्रस्तुत करता है।
मैं Jools नामक एक छोटी जावा यूटिल लाइब्रेरी पर काम कर रहा हूं, और इसमें कक्षा Range
है जो आपको आवश्यक कार्यक्षमता प्रदान करता है (एक डाउनलोड करने योग्य JAR है)।
कंस्ट्रक्टर्स (पाश के लिए समान एक करने के लिए) या तो Range(int stop)
, , या Range(int start, int stop, int step)
रहे हैं और आप इसके माध्यम से पुनरावृति कर सकते हैं, जो आलसी मूल्यांकन के लिए इस्तेमाल किया, या आप स्पष्ट रूप से सीमा सूची प्राप्त करने के अपने toList()
विधि का उपयोग कर सकते हैं।
for (int i : new Range(10)) {...} // i = 0,1,2,3,4,5,6,7,8,9
for (int i : new Range(4,10)) {...} // i = 4,5,6,7,8,9
for (int i : new Range(0,10,2)) {...} // i = 0,2,4,6,8
Range range = new Range(0,10,2);
range.toList(); // [0,2,4,6,8]
ग्रूवी की:
Range.closed(1, 5).asSet(DiscreteDomains.integers());
तुम भी अमरूद के AbstractIterator का उपयोग कर बात की इसी तरह करने के लिए एक काफी सरल इटरेटर लागू कर सकते हैं निफ्टी Range class जावा से उपयोग किया जा सकता है, हालांकि यह निश्चित रूप से ग्रोवी के रूप में नहीं है।
अमरूद 15.0 के बाद से, Range.asSet() पदावनत किया गया है और इसके बजाय निम्न संस्करण 16. उपयोग में निकालने के लिए शेड्यूल किया गया है:
ContiguousSet.create(Range.closed(1, 5), DiscreteDomain.integers());
"कार्यात्मक जावा" पुस्तकालय एक सीमित करने के लिए इस तरह से प्रोग्राम करने की अनुमति देता है डिग्री, इसमें एक श्रेणी() विधि है जो fj.data.Array उदाहरण बना रही है।
देखें:
इसी तरह "पूरी तरह से लेज़ी" पुस्तकालय एक आलसी रेंज विधि प्रदान करता है: http://code.google.com/p/totallylazy/
पुराना सवाल है, नया उत्तर (जावा 8 के लिए)
IntStream.range(0, 10).forEach(
n -> {
System.out.println(n);
}
);
या विधि के साथ संदर्भ:
IntStream.range(0, 10).forEach(System.out::println);
आप क्रम में निम्नलिखित कोड का टुकड़ा का उपयोग कर सकते पूर्णांकों की एक सीमा सेट प्राप्त करने के लिए:
Set<Integer> iset = IntStream.rangeClosed(1, 5).boxed().collect
(Collectors.toSet());
- 1. int
- 2. पायथन: int
- 3. int
- 4. पायथन: int64 से int
- 5. पर्ल में समतुल्य 'int, छोटा, लंबा' है?
- 6. int
- 7. जावा int ... सरणी नोटेशन
- 8. जावा int concurrency ++ int परमाणुInteger.incrementAndGet() के बराबर है?
- 9. जावा एनम रिटर्न Int
- 10. int चर
- 11. एक int (*) (int)
- 12. Int प्राथमिक कुंजी - int int से अधिक
- 13. जावा चार सरणी int
- 14. php string int int
- 15. const int = int const?
- 16. int * से int
- 17. स्थिर int int और int के बीच क्या अंतर है?
- 18. बाहरी int int के बीच अंतर; बाहरी int एक = 42;
- 19. int
- 20. INT
- 21. int
- 22. int
- 23. पायथन - हेक्स से INT/CHAR
- 24. int
- 25. int
- 26. हास्केल: जांचें कि Int Int
- 27. जावा में int से int को असाइन करना?
- 28. int और Integer के प्रदर्शन की तुलना
- 29. जावा: बाइनरी स्ट्रिंग को int
- 30. एसक्यूएल सर्वर: कन्वर्ट ((int) साल, (int) महीने, (int) दिन) Datetime
आप एक अजगर 2.x रेंज जो सूची लौटाता मतलब क्या है, या एक पायथन 3.x रेंज जो एक इटरेटर (2.x xrange के बराबर) देता है?पूर्व को लागू करने के लिए अपेक्षाकृत सरल है क्योंकि दूसरों ने नीचे किया है, लेकिन इटेटर संस्करण थोड़ा और मुश्किल है। –
मेरा मतलब था एक सूची। –
http://stackoverflow.com/questions/16570091/for-loop-like-python-range-function/31867991#31867991 – zengr