Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Método size() , Exercício 7

Olá amigos !

Foi visto que ao percorrermos a ArrayList usando "for" e usando o método size() caímos em uma Exceção. Visto que tal método nos retorna o total de elementos, acabamos por tentar acessar algo fora dos limites de nosso ArrayList. Vejam o código :

insira seu código aquiimport java.util.*;

public class TestandoListas {

public static void main(String[] args) {

String curso1 = "Java 8: Tire proveito dos novos recursos da linguagem"; String curso2 = "Apache Camel"; String curso3 = "Certificacao Java SE 8 Programmer I";

ArrayList cursos = new ArrayList<>(); cursos.add(curso1); cursos.add(curso2); cursos.add(curso3);

for (int i = 0; i <= cursos.size(); i++) { System.out.println("Aula : " + cursos.get(i)); } } }

Se lembrarmos de substituir "i <=cursos.size()" por "i<=(cursos.size() - 1)", a exceção desaparecerá. Isto é considerado uma gambiarra ? Em caso positivo, qual seria o método mais indicado para atender a tarefa de percorrer a lista neste caso? Obrigado

3 respostas

Oi Vitor, não é gambiarra não. Pode fazer tranquilamente. Mas ultimamente pra percorrer array se tem usado bastante for each. É uma boa prática.

solução!

Não é gambiarra e é bem comum. Mas existem outras opções talvez mais elegantes:

  • Considerar apenas menor, e não menor ou igual:
for (int i = 0; i < cursos.size(); i++) { 
    System.out.println("Aula : " + cursos.get(i)); 
}
  • Utilizar o formato foreach, onde é possível acessar diretamente cada item de um array / Iterable:
for (String curso : cursos) {
    System.out.println("Aula : " + curso);
}
  • Utilizar o método forEach, também disponível em qualquer Iterable (feature presente no java 1.8+):
cursos.forEach((curso) -> System.out.println("Aula : " + curso));

Ainda tem o:

cursos.forEach(System.out::println);