Preenchendo uma matriz multidimensional usando um fluxo

Eu sou novo no Java 8 e atualmente não estou conseguindo entender completamente o Streams. É possível preencher uma matriz usando as operações funcionais do Stream? Este é um código de exemplo de como eu faria isso com um padrão para loop:

public static void testForLoop(){
    String[][] array = new String[3][3];
    for (int x = 0; x < array.length; x++){
        for (int y = 0; y < array[x].length; y++){
            array[x][y] = String.format("%c%c", letter(x), letter(y));
        }
    }               
}

public static char letter(int i){
    return letters.charAt(i);
} 

Se for possível, como eu faria isso usando o Stream? Se for possível, é conveniente (desempenho e legibilidade)?

questionAnswers(4)

yourAnswerToTheQuestion