2017-06-05 59 views
5

Ja próbuje przekonwertować int 2D tablicy do tablicy 2D String z tym kodem:Jak mogę przekonwertować dwuwymiarową tablicę int na tablicę dwuwymiarową za pomocą strumieni?

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

ale pojawia się błąd kompilacji cannot convert from String to int robiąc Integer.toString(i). Myślałem, że to możliwe, ponieważ zbieram wyniki strumieniowania tablic int w tablicy String, ale czy nie map utworzyć nowy Collection?

Odpowiedz

10

Arrays.stream na int[] zwraca IntStream i iść z int do String lub innego Object, trzeba użyć metody IntStream.mapToObj, nie sposób map:

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

map metoda IntStream służy tylko do mapowania z int na int.