Java boucle foreach: for (Integer i : liste) { ... }
Lorsque j'utilise JDK5 comme ci-dessous
ArrayList<Integer> list = new ArrayList<Integer>();
for (Integer i : list) {
//cannot check if already reached last item
}
d'autre part, si je viens d'utiliser un Iterator
ArrayList<Integer> list = new ArrayList<Integer>();
for (Iterator i = list.iterator(); i.hasNext();) {
//i can check whether this is last item
if(i.hasNextItem()){
}
}
Comment puis-je vérifier si j'ai déjà atteint le dernier élément avec for (Integer i : list) {
Vous devez vous connecter pour publier un commentaire.
Une façon de le faire est d'utiliser un compteur:
Modifier
De toute façon, comme Tom Hawtin dit, il est parfois préférable d'utiliser le "vieux" syntaxe lorsque vous avez besoin pour obtenir l'indice actuel de l'information, à l'aide d'un
for
de la boucle ou de laiterator
, comme tout ce que vous gagnez lors de l'utilisation de la Java5 syntaxe sera perdu dans la boucle elle-même...ou
i == list.size()-1
dans l'autre exemple (les itérateurs sont généralement plus faciles à obtenir que les indices, bien que la syntaxe est un peu longue haleine).Il est parfois préférable d'utiliser un itérateur.
(Prétendument, "85%" de la demande, pour un indice dans le chic pour boucle pour la mise en œuvre d'un
String
méthode join (que vous pouvez facilement le faire sans).)String join = "x"; StringBuilder buf = new StringBuilder(); for(Integer i : x) buf.append(i).append(join); String result = buf.substring(0, buf.length() - join.length());
StringBuilder buff = new StringBuilder(); String sep = ""; for (Integer i : x) { buff.append(sep).append(i); sep = "x"; } String str = buff.toString();
. Pas de hackysubstring
.L'API ne prend pas en charge directement. Vous pouvez utiliser le for(int i..) en boucle et compter les éléments ou utiliser des sous-listes(0, taille - 1) et de manipuler le dernier élément explicitement:
Ce n'est utile que si elle n'introduit pas de redondance. Il fonctionne mieux que le comptage version (après la sous-liste de frais généraux est amorti). (Juste au cas où, vous vous en fichiez après la boxe, de toute façon).
Une autre façon, vous pouvez utiliser un objet pour capturer le dernier de la valeur et de faire quelque chose avec elle:
list.get(list.size() - 1);