Java int[][] matrice d'itération et de trouver de la valeur
J'ai un tableau sous la forme de " int[][]
" qui représente les coordonnées d'une petite grille. Chaque coordonnée a été attribué sa propre valeur. par exemple array[0][4] = 28
......
J'ai deux questions. Tout d'abord, comment puis-je parcourir toutes les valeurs stockées. Deuxièmement, je veux être en mesure à l'entrée d'une valeur et d'avoir ses propres coordonnées dans la grille retourné. Quelle serait la meilleure façon d'aborder cette question?
Merci pour toute aide!
Si c'est les devoirs, vous devez être clair sur ce point (en plus de l'aide aux devoirs de la balise).
OriginalL'auteur Tray | 2009-01-23
Vous devez vous connecter pour publier un commentaire.
Vous pouvez effectuer une itération soit avec des boucles for ou renforcée pour boucles:
ou
La première version serait la solution la plus simple pour trouver les coordonnées" question - il suffit de vérifier si la valeur dans la boucle intérieure est correcte.
Oh, d'accord alors 🙂 Maintenant, montre-moi de ne pas le faire de manière cohérente...
Mais hors la loi, si il fait ça, il ne sera pas rendre hommage à Fortran.
Nah. Fortran a été de rendre hommage à cette réponse de la première version. Il peut ne pas avoir connu ça, mais c'est sûrement vrai.
à l'exception de la dimension qui est la somme des lignes et de la dimension qui est la colonnes dépendent totalement de votre interprétation (carte[ligne][colonne] ou de la carte[colonne][ligne]); toutefois, i, j, k, l, m... sont toujours silly_array[i][j][k][l][m].... Qui, je suppose, est ce que Jon était arriver.
OriginalL'auteur Jon Skeet
pour effectuer une itération sur les valeurs de l'utilisation des boucles:
pour accéder aux coordonnées en fonction de la valeur que vous aurait besoin d'une sorte de double hashmap (regardez un à java.util.HashMap) mais je suis au courant de rien de ce qui le fait directement
wanats pour trouver les coordonnées de la valeur. donc, la clé doit être la valeur de la cellule . les choses vont devenir plus compliquées si plusieurs cellules peuvent avoir la même valeur, mais c'est encore faisable
Je pense avoir un autre discbased ici est probablement une mauvaise idée. Il pourrait être difficile de les garder synchronisés. Il est probablement préférable de rechercher l'ensemble du tableau, même si elle sera plus lente.
Magasin new Integer(ix + iy * 1000) comme la valeur de votre table de hachage. Si votre y index peut aller à plus de 1000 utiliser un plus grand nombre--ints sont vraiment de gros. Pour obtenir à nouveau utiliser ix=val%1000, iy=val/1000.
OriginalL'auteur user54579
Pour itérer sur tous les éléments de la grille essayez ceci:
OriginalL'auteur Kevin Loney
À moins que votre grille est trié, d'une certaine façon, vous n'aurez probablement pas faire mieux que la force brutale de recherche.
Pour réitérer, je pense que ce serait quelque chose comme ceci (syntaxe pourrait être un peu hors, je n'ai pas traité avec des tableaux en java pour un temps.):
Pour la recherche que vous auriez probablement besoin de l'utiliser pour effectuer une itération, puis revenir une fois que vous l'avez trouvé.
Si vous pourriez être à la recherche de la position de la même valeur à plusieurs reprises, alors vous pourriez vouloir memoize les résultats à l'aide d'une table de hachage.
OriginalL'auteur Herms
Utiliser des boucles for imbriquées à itérer sur les dimensions x et y, ce qui vous permet d'aller sur chaque valeur, un à la fois.
Pour la saisie d'une valeur, il suffit de faire la même chose que ci-dessus, mais regarder un match de votre valeur demandée.
OriginalL'auteur alexwood
Vous serez plus heureux si vous bloquez toutes ces collections, à l'intérieur d'une seule classe et de ne pas les exposer en quelque sorte.
Cela signifie passer votre recherche et de recherche de routines dans cette classe.
Pour le stockage, tout le monde est couvert de l'itération, ajouter une table de hachage et de la recherche. J'ai mis ce commentaire sur nickolai du post:
Store new Integer(ix + iy * 1000) comme la valeur de votre table de hachage. Si votre y index peut aller à plus de 1000 utiliser un plus grand nombre--ints sont vraiment de gros. Pour obtenir à nouveau utiliser ix=val%1000, iy=val/1000.
Si votre matrice et de la table de hachage sont encapsulés dans la même classe, le reste de votre code sera assez facile à écrire et beaucoup plus propre.
OriginalL'auteur Bill K
Il n'y a généralement aucun moyen de trouver les coordonnées spécifiques d'une valeur particulière, sauf en passant par le tableau et la recherche. Toutefois, si les valeurs dans le tableau sont garantis d'être unique (c'est à dire chaque valeur se produit uniquement dans une cellule), vous pourriez maintenir un tableau séparé comme un indice, qui stocke les coordonnées de chaque valeur indexée par la valeur.
OriginalL'auteur David Z