मैं डॉक्स को देख रहा हूं IntStream
, और मुझे एक toArray
विधि दिखाई दे रही है , लेकिन सीधे ए पर जाने का कोई तरीका नहीं हैList<Integer>
निश्चित रूप से ए को कन्वर्ट करने का एक तरीका Stream
है List
?
मैं डॉक्स को देख रहा हूं IntStream
, और मुझे एक toArray
विधि दिखाई दे रही है , लेकिन सीधे ए पर जाने का कोई तरीका नहीं हैList<Integer>
निश्चित रूप से ए को कन्वर्ट करने का एक तरीका Stream
है List
?
जवाबों:
IntStream::boxed
IntStream::boxed
एक बदल जाता है IntStream
एक में Stream<Integer>
जो आप कर सकते हैं तो, collect
एक में List
:
theIntStream.boxed().collect(Collectors.toList())
boxed
विधि धर्मान्तरित int
एक के आदिम मूल्यों IntStream
की एक धारा में Integer
वस्तुओं। शब्द "बॉक्सिंग" नाम int
⬌ Integer
रूपांतरण प्रक्रिया। ओरेकल ट्यूटोरियल देखें ।
toList
। यह फ़ाइल के आयात के बीच निम्नलिखित रखकर किया जाता है static import java.util.stream.Collectors.toList;
:। फिर कलेक्ट कॉल सिर्फ पढ़ता है .collect(toList())
।
Collectors
में वर्ग को जोड़कर किया जाता है । इसके बाद, आपको IDE को भरने और स्थैतिक आयात को जोड़ने के लिए हिट सीटीआर + स्पेस पर टाइप करना होगा। toLi
toList
boxed()
भाग को इंगित करने के लिए धन्यवाद
आप एक स्ट्रीम पर MapToObj () का भी उपयोग कर सकते हैं, जो एक इंटफ़ंक्शन लेता है और इस स्ट्रीम के तत्वों को दिए गए फ़ंक्शन को लागू करने के परिणामों से मिलकर एक ऑब्जेक्ट-वैल्यू स्ट्रीम देता है।
List<Integer> intList = myIntStream.mapToObj(i->i).collect(Collectors.toList());
boxed()
प्रतिनिधि है।
आप ग्रहण संग्रह में उपलब्ध आदिम संग्रह का उपयोग कर सकते हैं और मुक्केबाजी से बच सकते हैं।
MutableIntList list =
IntStream.range(1, 5)
.collect(IntArrayList::new, MutableIntList::add, MutableIntList::addAll);
नोट: मैं कलेक्शन एक्लिप्स का योगदानकर्ता हूं।
MutableIntList list = IntLists.mutable.withAll(IntStream.range(1, 5))
आप एकत्रित विधि का उपयोग कर सकते हैं:
IntStream.of(1, 2, 3).collect(ArrayList::new, List::add, List::addAll);
वास्तव में, यह लगभग वैसा ही है जैसा आप कॉल करते समय जावा करते हैं। एक ऑब्जेक्ट स्ट्रीम पर .collect (संग्राहक.toList ()):
public static <T> Collector<T, ?, List<T>> toList() {
return new Collectors.CollectorImpl(ArrayList::new, List::add, (var0, var1) -> {
var0.addAll(var1);
return var0;
}, CH_ID);
}
नोट: तीसरा पैरामीटर केवल तभी आवश्यक है जब आप समानांतर संग्रह चलाना चाहते हैं; अनुक्रमिक संग्रह के लिए सिर्फ पहले दो पर्याप्त होगा।