के अनुसार प्रभावी जावा 2 एड, जब आप एक विधि हस्ताक्षर लिखना चाहते हैं जो varargs की अनुमति देता है लेकिन अभी भी लागू करता है कि आपके पास संकलन-समय पर कम से कम एक तत्व है, तो आपको विधि हस्ताक्षर लिखना चाहिए :जावा 8 स्ट्रीम और varargs
public void something(String required, String ... additional) {
Stream<String> allParams =
Stream.concat(Stream.of(required), Stream.of(additional));
//... do what you want to do
}
यह वास्तव में असजीला और बेकार लगता है, विशेष रूप से, क्योंकि मैं 1 की एक धारा बना रहा हूं:
public void something(String required, String ... additional) {
//... do what you want to do
}
मैं इन सभी तत्वों स्ट्रीम करने के लिए चाहते हैं, तो मैं कुछ इस तरह कर रहा हूँ और concatena इसे दूसरे के साथ टिंग करें। क्या ऐसा करने का कोई क्लीनर तरीका है?
'Stream.concat' मेरे लिए ठीक लग रहा है .. .it संक्षिप्त, संक्षेप में, यह डेटा की प्रतियां नहीं बनाता है। आप कुछ अतिरिक्त रैपर ऑब्जेक्ट्स बना रहे हैं, बस इतना ही। आईएमओ वास्तव में इसके साथ कुछ भी गलत नहीं है। जावा में प्रोग्रामिंग, आपको बस यहां और वहां चीजों के लिए छोटी वस्तुएं बनाना है। 'Stream.concat' पहले से ही' ArrayList' या उसके जैसा कुछ विलय करने से पहले मील आगे है। – Radiodef
मैं रेडियोडेफ़ से सहमत हूं, यदि आप वास्तव में चाहते थे कि आप 'स्प्लिटरेटर' का अपना कार्यान्वयन कर सकें और इसे 'StreamSupport.stream (spliterator, समानांतर)' के साथ उपयोग करें, लेकिन मुझे वास्तव में ऐसा नहीं लगता है कि यह और अधिक पठनीय या कुशल बनाता है । –