मैं जावा में flatMap
Optional
एस की कोशिश कर रहा हूं।जावा 8 flatMap + Optional.of संकलित नहीं करता
List<String> x = Arrays.asList("a", "b", "c");
List<String> result = x.stream().flatMap((val) -> val.equals("b") ? Optional.empty() : Optional.of(val)).collect(Collectors.toList());
मैं संकलक से इस त्रुटि संदेश मिलता है:
Error:(10, 27) java: incompatible types: no instance(s) of type variable(s) T exist so that java.util.Optional<T> conforms to java.util.stream.Stream<? extends R>
क्या गलत है यहाँ एक सरल उदाहरण है?
List("a", "b", "c").flatMap(x => if (x == "b") None else Some(x))
यह रिटर्न:
res2: List[String] = List(a, c)
अपेक्षा के अनुरूप यहाँ मैं क्या स्काला में प्राप्त करने के लिए कोशिश कर रहा हूँ का एक उदाहरण है।
मैं इसे जावा में कैसे परिवर्तित करूं ताकि यह संकलित हो सके?
धन्यवाद! आम तौर पर मैं फ़िल्टर करता हूँ। इस मामले में (वास्तविक मामला, सरलीकृत खिलौना उदाहरण नहीं) मैं वैकल्पिक विकल्प का उपयोग करना चाहता हूं क्योंकि फ़िल्टरिंग का मतलब बहुत सारे बकवास के माध्यम से खोदना होगा जो मुझे मानचित्र-चरण में भी करना होगा। – auramo
जब स्ट्रीम के प्रत्येक तत्व को एक 'वैकल्पिक' पर मैप किया जाता है, तो 'flatMap' का उपयोग करने की कोई आवश्यकता नहीं होती है। बस '.map (val -> val.equals ("b") का उपयोग करें? वैकल्पिक .empty(): वैकल्पिक।(वैल)) ' – Holger
@ होल्गर आप बिल्कुल सही हैं। मैंने इसके बारे में नहीं सोचा था। मैं एक फ्लैटमैप का उपयोग करने के ओपी के फैसले का पालन कर रहा था। – Eran