Comparez chaque élément à tous les autres éléments dans ArrayList
J'ai de la difficulté avec ce que je pensais devrait être assez simple problème.
J'ai besoin de comparer chaque élément dans une liste de tableaux avec chaque autre élément dans la liste sans en comparant les éléments à eux-mêmes. Ce n'est pas aussi simple que d'appeler une equals() comparaison, il implique une certaine logique personnalisée que j'ai omis dans mon code ci-dessous. Aussi la liste de tableaux ne doivent pas être modifiés en aucune façon.
Le problème, je semble avoir, c'est que une fois que je reçois dans la deuxième boucle, je ne sais pas si j'ai un autre objet à comparer à (depuis sa une variable de la taille de la liste).
for(int i =0; i< list.size(); i++){
//get first object to compare to
String a = list.get(i).getA();
Iterator itr = list.listIterator(i + 1 ); //I don't know if i + 1 is valid
while(itr.hasNext()){
//compare A to all remaining items on list
}
}
Je pense que j'ai probablement les choses à ce sujet dans le mauvais sens, je suis ouvert aux suggestions ou des conseils sur la façon de faire mieux.
source d'informationauteur JavaKungFu
Vous devez vous connecter pour publier un commentaire.
Quel est le problème avec l'aide de
for
boucle à l'intérieur, tout comme à l'extérieur?En général, depuis Java 5, j'ai utilisé les itérateurs seulement une fois ou deux fois.
Dans certains cas, c'est la meilleure façon pour que votre code peut avoir changer quelque chose et j=i+1 ne sera pas vérifier.
Le code suivant va comparer chaque élément avec d'autres de la liste des éléments à l'aide de méthode contains ().Longueur de la boucle for doit être plus grande taille() de la plus grande liste, alors seulement il sera de comparer tous à la fois des valeurs de la liste.
De sortie est vrai
vrai
faux
Ce code m'a aidé à obtenir ce comportement: Avec une liste a,b,c, je devrais obtenir par rapport ab, ac et bc, mais n'importe quelle autre paire excédent /ne sont pas nécessaires.
La boucle se déroule comme dans cette image:
Triangulaire comparaison visuelle exemple
ou comme ceci:
total de comparaisons est un nombre triangulaire (n * n-1)/2