2017-06-05 9 views
5

मैं इस कोड के साथ एक 2 डी स्ट्रिंग सरणी में एक 2 डी पूर्णांक सरणी परिवर्तित करने का प्रयास कर रहा हूँ:मैं 2 डी int सरणी को स्ट्रीम के साथ 2 डी स्ट्रिंग सरणी में कैसे परिवर्तित कर सकता हूं?

Arrays.stream(intArray).map(a -> 
    Arrays.stream(a).map(i -> 
     Integer.toString(i)).toArray()).toArray(String[][]::new); 

लेकिन जब Integer.toString(i) कर मैं संकलन समय त्रुटि cannot convert from String to int मिलता है। मैंने सोचा कि ऐसा इसलिए हो सकता है क्योंकि मैं सरणी को String सरणी में स्ट्रीम करने के परिणाम एकत्र कर रहा हूं, लेकिन map कोई नया Collection नहीं बना रहा है?

उत्तर

10

एक int[] पर Arrays.stream एक IntStream देता है, और एक int से एक String या किसी अन्य Object पर जाने के लिए, आप IntStream.mapToObj विधि का उपयोग करने के लिए है, न map विधि:

Arrays.stream(intArray).map(a -> 
    Arrays.stream(a).mapToObj(i -> 
     Integer.toString(i)).toArray(String[]::new)).toArray(String[][]::new); 

की map विधि IntStream का उपयोग केवल int से int पर करने के लिए किया जाता है।

संबंधित मुद्दे