मुझे यह समझने में परेशानी हो रही है कि findAny()
filter()
स्ट्रीम के बाद एक शून्य सूचक अपवाद फेंकता है। इस विशेष परीक्षण मामले में, फ़िल्टर ऑपरेशन को findAny()
के लिए कोई परिणाम नहीं छोड़कर, सबकुछ फ़िल्टर करना चाहिए था।जावा धाराओं को खोजने के बाद कोई भी() मुठभेड़ शून्य सूचक अपवाद फ़िल्टर() ऑपरेशन सब कुछ फ़िल्टर करता है
Optional<JsonNode> encryption = sseEncryptionList.stream()
.filter(n -> n.textValue().equals("AES256")) //Filters out everything
.findAny(); //Throws null pointer exception
स्टैक ट्रेस:
Exception in thread "main" java.lang.NullPointerException
at example.Main.lambda$main$0(Main.java:41)
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:174)
at java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1351)
at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.findAny(ReferencePipeline.java:469)
at example.Main.main(Main.java:42)
findAny()
के लिए इस अपेक्षित व्यवहार एक नल पॉइंटर एक्सेप्शन फेंकने के लिए करता है, तो धारा किसी भी तत्व को शामिल नहीं करता है?
संपादित करें: फ़िल्टर तत्वों को हल करने के लिए एक सुरुचिपूर्ण और कार्यात्मक तरीका क्या है जो सभी तत्वों को फ़िल्टर कर सकता है?
संभावित डुप्लिकेट [क्यों ढूँढें फर्स्ट() एक NullPointerException फेंक दें यदि यह पहला तत्व पाता है तो शून्य है?] (https://stackoverflow.com/questions/32466799/why-does-findfirst-throw-a-nullpointerexception-if-the-first-element-it- पाता है) – alfasin
अच्छी तरह से अगर आप नल को फ़िल्टर करना चाहते हैं, तो मैंने जवाब में कहा था कि 'फ़िल्टर (ऑब्जेक्ट्स :: नॉन नल)' का उपयोग करें। – Eugene