Consider splitting the input into 2 streams, then apply the winGame to appropriate stream and recombine? The goal is to be using Stream<Player> vs List<Player>