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();