Je suis à la migration d'un morceau de code pour rendre l'utilisation des génériques. Un argument pour le faire, c'est que la boucle est beaucoup plus propre que de garder la trace d'indices, ou de l'utilisation explicite de l'itérateur.
Dans environ la moitié des cas, la liste (une liste de tableaux) est itérée dans l'ordre inverse à l'aide d'un index.
Quelqu'un peut-il suggérer une façon plus propre de le faire (car je n'aime pas le indexés pour la boucle lorsque l'on travaille avec des collections)?
for (int i = nodes.size() - 1; i >= 0; i--) {
final Node each = (Node) nodes.get(i);
...
}
Note: je ne peux pas ajouter de nouvelles dépendances à l'extérieur de la JDK.
A pris a accepté de répondre et l'a transformé en:
class ListReverser<T> implements Iterable<T> {
private ListIterator<T> listIterator;
public ListReverser(List<T> wrappedList) {
this.listIterator = wrappedList.listIterator(wrappedList.size());
}
public Iterator<T> iterator() {
return new Iterator<T>() {
public boolean hasNext() {
return listIterator.hasPrevious();
}
public T next() {
return listIterator.previous();
}
public void remove() {
listIterator.remove();
}
};
}
}
Qui peut être utilisé comme:
for (final Node each : new ListReverser<Node>(nodes)) {
//...
}
Pas génial, mais en mieux.