J'ai couru dans ce cas, beaucoup de temps quand on fait simple traitement de texte et d'imprimer des états où je suis en boucle sur une collection et je veux le cas particulier du dernier élément (par exemple, tous les éléments seront séparés par une virgule, sauf pour le dernier cas).
Est-il une meilleure pratique de l'idiome ou de forme élégante qui ne nécessite pas de duplication de code ou de se l'enfiler dans un si, d'autre dans la boucle.
Par exemple j'ai une liste de chaînes de caractères que je veux imprimer une liste séparée par des virgules. (le faire alors que la solution déjà suppose la liste a 2 ou plusieurs éléments sinon, il serait tout aussi mauvais que le plus correct pour la boucle conditionnelle).
par exemple, la Liste = ("chien", "chat", "chauve-souris")
Je veux imprimer "[chien, chat, chauve-souris]"
Je vous présente 2 méthodes de la
-
Pour la boucle conditionnelle
public static String forLoopConditional(String[] items) { String itemOutput = "["; for (int i = 0; i < items.length; i++) { // Check if we're not at the last element if (i < (items.length - 1)) { itemOutput += items[i] + ", "; } else { // last element itemOutput += items[i]; } } itemOutput += "]"; return itemOutput; }
-
boucle do while amorçage de la boucle
public static String doWhileLoopPrime(String[] items) { String itemOutput = "["; int i = 0; itemOutput += items[i++]; if (i < (items.length)) { do { itemOutput += ", " + items[i++]; } while (i < items.length); } itemOutput += "]"; return itemOutput; }
Testeur de classe:
public static void main(String[] args) { String[] items = { "dog", "cat", "bat" };
Dans le Java AbstractCollection classe a la suite de la mise en œuvre (un peu verbeux, car il contient tous les bords cas de vérification d'erreur, mais pas mauvais).
}