Placar de jogo
Em sistemas de jogos, você frequentemente precisa manter listas paralelas: uma com nomes de jogadores e outra com suas pontuações. Mesmo que existam soluções mais elegantes com objetos, dominar ArrayLists em paralelo é útil quando você precisa de simplicidade ou está lidando com dados de fontes separadas. Essa técnica aparece em rankings, carrinhos de compra e qualquer situação onde dois conjuntos de dados andam juntos.
O PROBLEMA
Dois ArrayLists para pontuações aleatórias. Exiba placar e vencedor.
EXEMPLO
Vencedor: Jogador 2!
SOBRE O CONCEITO
Aqui você cria dois ArrayLists, um para armazenar os nomes dos jogadores (ou identificadores) e outro para as pontuações geradas com Random. O truque é garantir que os índices fiquem sempre sincronizados: ao adicionar um novo jogador, você adiciona a pontuação correspondente na mesma posição no outro ArrayList. O erro comum de 'índice fora dos limites' ocorre quando você tenta acessar uma posição que não existe, por exemplo, ao comparar pontuações sem verificar se as listas têm o mesmo tamanho. Como streams são proibidos, você precisa usar um laço for manual para percorrer os índices e encontrar a maior pontuação, sempre acessando com métodos get(i) de ambos os ArrayLists. Lembre-se: qualquer operação que mexa em um ArrayList deve mexer no outro simultaneamente para evitar inconsistências.
RESOLUÇÃO