Well, one option is not to think about all the winning boards, but about all the winning places. For instance:
private static final int[][] LINES_OF_THREE = {
{ 0, 1, 2 },
{ 3, 4, 5 },
{ 6, 7, 8 },
{ 0, 3, 6 },
{ 1, 4, 7 },
{ 2, 5, 8 },
{ 0, 4, 8 },
{ 6, 4, 2 }
};
Then something like:
for (int[] line : LINES_OF_THREE) {
boolean won = true;
for (int place : line) {
if (!newBoard.get(place).equals(player)) {
won = false;
break;
}
}
if (won) {
}
}