मैं डॉक्स को देख रहा हूं IntStream, और मुझे एक toArrayविधि दिखाई दे रही है , लेकिन सीधे ए पर जाने का कोई तरीका नहीं हैList<Integer>
निश्चित रूप से ए को कन्वर्ट करने का एक तरीका Streamहै List?
मैं डॉक्स को देख रहा हूं IntStream, और मुझे एक toArrayविधि दिखाई दे रही है , लेकिन सीधे ए पर जाने का कोई तरीका नहीं हैList<Integer>
निश्चित रूप से ए को कन्वर्ट करने का एक तरीका Streamहै List?
जवाबों:
IntStream::boxedIntStream::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 को भरने और स्थैतिक आयात को जोड़ने के लिए हिट सीटीआर + स्पेस पर टाइप करना होगा। toLitoList
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);
}
नोट: तीसरा पैरामीटर केवल तभी आवश्यक है जब आप समानांतर संग्रह चलाना चाहते हैं; अनुक्रमिक संग्रह के लिए सिर्फ पहले दो पर्याप्त होगा।