J'ai une question à vous, j'essaie d'enregistrer des entiers de la carte à un tableau en utilisant une boucle. Cet exemple ci-dessous ne fonctionne pas comme je le voulais, car lorsque j'affiche ce tableau d'INT, il n'a que "2" pour 10 éléments, mais je voulais obtenir [1,2,0,0,0,0,0 ...], Ce qui devrait être changé dans ce code?
3 Réponses :
Dans chaque itération de la boucle, vous écrasez l'ensemble de la matrice. Vous pouvez plutôt enregistrer l'index de la matrice en dehors de la boucle et l'utiliser pour mettre à jour le tableau:
int index = 0;
for (Integer val: fooMap.keySet()) {
arrayOfIntegers[index] = val;
++index;
}
Merci d'avoir expliqué cela cela à moi.
Vous pouvez utiliser des flux:
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class stack1 {
public static void main(String[] args) {
Map<Integer, String> fooMap = new HashMap<>();
fooMap.put(1, "AB");
fooMap.put(2, "BBA");
int memoryAllocated = 10;
int[] arrayOfIntegers = new int[memoryAllocated];
int pos =0;
for (Map.Entry<Integer, String> values : fooMap.entrySet()) {
int val = values.getKey();
arrayOfIntegers[pos]=val;
pos =pos+1;
}
while(pos < memoryAllocated){
arrayOfIntegers[pos]=0;
pos = pos+1;
}
System.out.println("Arrays : "+Arrays.toString(arrayOfIntegers));
}
}
Vous en boucle autour de toutes les entrées (1 -> AB et 2 -> BBA), imprimez la clé (1 et 2), puis écrivez cette touche à chaque index d'un tableau qui n'est jamais lu. Qu'est-ce qui vous confondre à ce sujet?
Pour chaque élément de la carte, vous êtes itération sur l'ensemble de la matrice et définissez chaque index en la valeur.