Java 8 Stream में map() और flatMap() विधियों में क्या अंतर है?
सभी को नमस्ते! मैंने हाल ही में Java 8 सीखना शुरू किया है और Stream API को समझने की कोशिश कर रहा हूँ। मैंने कई लेख पढ़े, लेकिन `map()` और `flatMap()` विधियों के बीच अंतर समझ नहीं पा रहा हूँ। \n\nमेरे पास एक सरल उदाहरण है। मान लीजिए, स्ट्रिंग्स की एक सूची है:\n```java\nList words = Arrays.asList("Hello", "World");\n```\nअगर मैं इस सूची पर `map()` लागू करता हूँ और प्रत्येक स्ट्रिंग को अलग-अलग characters में विभाजित करना चाहता हूँ:\n```java\nwords.stream()\n .map(word -> word.split(""))\n .forEach(System.out::println);\n```\nतो मुझे `[Ljava.lang.String;@1b6d3586` जैसा आउटपुट मिलता है — कुछ hash codes, characters नहीं। ऐसा क्यों होता है? मैं characters की सूची कैसे प्राप्त करूँ? \n\nमैंने सुना है कि `flatMap()` मदद कर सकता है, लेकिन यह नहीं समझ पा रहा हूँ कि कैसे। इन विधियों के बीच मूलभूत अंतर क्या है? `map()` का उपयोग कब करना चाहिए?