Itérer tableau de chaînes en Java
J'ai de tableau de Chaîne avec certains composants, ce tableau a 5 éléments et de modifier certains moments. Ce que je voudrais faire est de parcourir ce tableau et obtenir le premier composant et le composant à côté de celui-là. Donc, la première fois que je voudrais obtenir le composant et le composant numéro 2, la deuxième fois, serait d'obtenir le numéro 2 et 3, la troisième fois, le numéro 3 et 4... Et ainsi de suite jusqu'à ce que vous arrivez à la dernière composante.
Cette quel point je suis venu:
String[] elements = { "a", "a","a","a" };
for( int i = 0; i <= elements.length - 1; i++)
{
//get element number 0 and 1 and put it in a variable,
//and the next time get element 1 and 2 and put this in another variable.
}
Comment puis-je y arriver?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez faire un amélioré pour la boucle (pour java 5 et plus) pour l'itération sur les éléments du tableau:
Noter que dans ce cas,
elements.length
est de 4, si vous souhaitez effectuer une itération de[0,2]
pour obtenir les éléments0,1
,1,2
et2,3
.Cela permet de s'assurer que vous n'obtenez pas une
ArrayIndexOutOfBoundsException
pour le dernier élément (il n'y a pas de 'suivant' il). L'autre option consiste à itérer ài < elements.length - 1
. Cela dépend de vos exigences.Je dirais qu'au lieu de tester
i
moins deelements.length - 1
testsi + 1
moins deelements.length
. Vous n'êtes pas changer le domaine de la matrice que vous êtes à la recherche à l' (c'est à dire en ignorant le dernier élément), mais plutôt de changer le plus grand élément que vous regardez dans chaque itération.Vous devez maintenir la série combien de fois vous avez accès au tableau.Comme ce
Ces algorithmes sont à la fois incorrecte en raison de la comparaison:
ou
Il est vrai que les éléments du tableau de la gamme de
0
àlength - 1
, mais la comparaison dans ce cas devrait êtreless than or equal to
.Celles-ci doivent être:
ou
ou
Le tableau
["a", "b"]
itérer comme:
puis la sortie de la boucle car 2 n'est pas < 2.
Le mauvais exemples à la fois sortir de la boucle prématurément et exécuter uniquement avec le premier élément dans ce cas simple de deux éléments.
Si vous êtes à la recherche de la performance et de l'ordre d'itération n'est pas pertinente, vous pouvez effectuer une itération à l'aide d'un optimisée boucle de retournement:
De cette manière, vous êtes retriving la longueur de la matrice, une fois, puis la décrémentation de l'index et en la comparant avec zéro en une seule opération atomique. Dernier mais pas le dernier en comparant avec zéro est une opération très rapide, souvent optmised par le nombre de processeurs (plus rapide que de comparer à la legnth de la matrice).