Comptage de caractères spécifiques dans un tableau à deux dimensions à l’aide d’un stream

Je voudrais compter les occurrences d’un caractère (par exemple l’espace: ' ' ) dans un tableau 2D, en utilisant stream. J’essayais de trouver une solution. Voici mon code, utilisant une boucle nestede:

 public int countFreeSpaces() { int freeSpaces = 0; for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { if (board[j][i] == ' ') freeSpaces++; } } return freeSpaces; } 

Je crois que cette réponse est légèrement plus expressive:

 int freeSpaces = (int) Arrays.stream(board) .map(CharBuffer::wrap) .flatMapToInt(CharBuffer::chars) .filter(i -> i == ' ') .count(); 

Que dis-tu de ça?

 // v--- create a Stream int spaces = (int) Stream.of(board) .flatMapToInt(cells->IntStream.range(0, cells.length) .filter(i -> cells[i] == ' ')) .count();