197 votes

Comment convertir int[] en Integer[] en Java ?

Je suis nouveau dans le domaine de Java et je suis très confus.

J'ai un grand ensemble de données de longueur 4 int[] et je veux compter le nombre de fois que chaque combinaison particulière de 4 entiers se produit. C'est très similaire au comptage de la fréquence des mots dans un document.

Je veux créer un Map<int[], double> qui fait correspondre chaque int[] à un compte courant au fur et à mesure que la liste est itérée, mais Map ne prend pas les types primitifs.

Alors j'ai fait Map<Integer[], Double> .

Mes données sont stockées en tant que ArrayList<int[]> donc ma boucle devrait être quelque chose comme :

ArrayList<int[]> data = ... // load a dataset`

Map<Integer[], Double> frequencies = new HashMap<Integer[], Double>();

for(int[] q : data) {

    // **DO SOMETHING TO convert q from int[] to Integer[] so I can put it in the map

    if(frequencies.containsKey(q)) {
    frequencies.put(q, tfs.get(q) + p);
    } else {
        frequencies.put(q, p);
    }
}

Je ne suis pas sûr du code dont j'ai besoin dans le commentaire pour que cela fonctionne afin de convertir un fichier de type int[] à un Integer[] . Ou peut-être suis-je fondamentalement confus quant à la bonne façon de procéder.

1voto

Thomas Ahle Points 10403

Bien que le code ci-dessous soit compilé, il génère une erreur de compilation. ArrayStoreException au moment de l'exécution.


Convertir un int[] à un Integer[] :

int[] old;
...
Integer[] arr = new Integer[old.length];
System.arraycopy(old, 0, arr, 0, old.length);

Je dois admettre que j'ai été un peu surpris que cela compile, étant donné que System.arraycopy étant de bas niveau et tout, mais c'est le cas. Au moins dans Java 7.

Vous pouvez convertir l'autre sens tout aussi facilement.

-3voto

Vous n'en avez pas besoin. int[] est un objet et peut être utilisé comme clé dans une carte.

Map<int[], Double> frequencies = new HashMap<int[], Double>();

est la définition correcte de la carte des fréquences.

C'était une erreur :-). La solution correcte est également affichée :-).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X