2017-06-05 81 views
5

我試圖二維int數組轉換爲二維String數組與此代碼:如何將2D int數組轉換爲帶有Streams的2D String數組?

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陣列中流式傳輸int陣列的結果,但是不會創建新的Collection

回答

10

Arrays.streamint[]返回一個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