मेरे पास जावा लैम्ब्डा स्ट्रीम है जो एक फ़ाइल को पार करती है और परिणाम को कुछ बुनियादी फ़िल्टरिंग के आधार पर संग्रह में संग्रहीत करती है।विभिन्न संग्रहों में जावा लैम्ब्डा स्ट्रीम
मैं सिर्फ लैम्बडा सीख रहा हूं इसलिए अगर यह हास्यास्पद रूप से खराब है तो मेरे साथ यहां भालू। लेकिन कृपया मेरी गलतियों को इंगित करने के लिए स्वतंत्र महसूस करें।
किसी दिए गए फ़ाइल के लिए:
#ignored
this
is
#ignored
working
fine
कोड:
List<String> matches;
Stream<String> g = Files.lines(Paths.get(givenFile));
matches = g.filter(line -> !line.startsWith("#"))
.collect(Collectors.toList());
["this", "is", "working", "fine"]
अब, मैं इस एक ही स्ट्रीम के भीतर एक दूसरी सूची में नजरअंदाज कर दिया लाइनों का संग्रह के बारे में जाना होगा? कुछ की तरह:
List<String> matches;
List<String> ignored; // to store lines that start with #
Stream<String> g = Files.lines(Paths.get(exclusionFile.toURI()));
matches = g.filter(line -> !line.startsWith("#"))
// how can I add a condition to throw these
// non-matching lines into the ignored collection?
.collect(Collectors.toList());
मुझे लगता है यह बहुत एक नई धारा को खोलने के लिए तुच्छ हो सकता है, तर्क थोड़ा, और .collect() आसानी से पर्याप्त ध्यान नहीं दिया लाइनों को बदलने। लेकिन अगर मैं इसे एक स्ट्रीम में कर सकता हूं तो मैं इस फाइल को दो बार लूप नहीं करना चाहता हूं।
यह 'g.filter (..) जैसे कुछ होना चाहिए। नक्शा (टी-> टी :: toString))। संग्रह (.. toList())' –
ओरेकल दस्तावेज़ों में अंतिम उदाहरण देखें: https: //docs.oracle.com/javase/8/docs/api/java/util/stream/Collectors.html – Gene