OVH Cloud OVH Cloud

Vector de int ?

8 réponses
Avatar
Florent
Bonjour,

une question certainement idiote d'un petit newbie :

J'ai besoin d'un tableau dynamique contenant des int
la solution que j'ai :

Vector monVecteur = new Vector();
int variable=15;
monVecteur.add( new Integer ( variable ) );

N'y aurait-il pas un moyen plus simple de faire des tableaux dynamique
de int ?

Merci.

Florent

8 réponses

Avatar
Olivier Thomann
N'y aurait-il pas un moyen plus simple de faire des tableaux dynamique
de int ?
Tout d'abord un vecteur est synchronisé.

Si tu ne fais pas de multithread, c'est complètement inutile et plus lent.
Tu peux simplement gérer un tableau de int et un compteur. Ensuite tu
géres l'expansion de ton tableau toi-même.
Si tu tiens vraiment à utiliser une collection, tu peux utiliser un
java.util.ArrayList, mais tu devras alors passer par des integers ce qui
apporte une consommation mémoire inutile.
--
Olivier

Avatar
Fabien Bergeret
Florent wrote:
Bonjour,

une question certainement idiote d'un petit newbie :

J'ai besoin d'un tableau dynamique contenant des int
la solution que j'ai :

Vector monVecteur = new Vector();
int variable;
monVecteur.add( new Integer ( variable ) );

N'y aurait-il pas un moyen plus simple de faire des tableaux dynamique
de int ?

Merci.

Florent

En 1.5, avec l'autoboxing, ca devrait le faire tout seul.

Ensuite, il vaut mieux utiliser un LinkedList ou un ArrayList suivant
l'utilisation de ton tableau (si peu de parcours par index, LinkedList)

Avatar
Pif
Bonjour,

une question certainement idiote d'un petit newbie :

J'ai besoin d'un tableau dynamique contenant des int
la solution que j'ai :

Vector monVecteur = new Vector();
int variable;
monVecteur.add( new Integer ( variable ) );

N'y aurait-il pas un moyen plus simple de faire des tableaux dynamique
de int ?

Merci.

Florent

t'as aussi des librairies java comme Trove4J qui permettent d'éviter les

templates...

Avatar
Olivier Thomann
En 1.5, avec l'autoboxing, ca devrait le faire tout seul.
Ensuite, il vaut mieux utiliser un LinkedList ou un ArrayList suivant
l'utilisation de ton tableau (si peu de parcours par index, LinkedList)
Précisons quand même que l'autoboxing reste pénalisant au runtime. C'est

plus simple d'utilisation (pas besoin de créer explicitement un
Integer), mais ça reste couteux.
--
Olivier

Avatar
Pif
vi, d'ou l'intéret de librairie comme Trove4J (GPL) à mon gout.... :)
Avatar
Francis JUGE-BOIRARD
Bonjour,
Juste pour information :
à partir de jdk/jre 1.5.XX

ArrayList<Integer> arrayInt = new ArrayList<Integer> ();

arrayInt.add (10);

Cela fonctionne, plus besoin de construire explicitement un Integer....

De plus

Integer anInteger = arrayInt.get (0); // Fonctionne aussi, plus besoin de cast
explicite....
Avatar
Olivier Thomann
ArrayList<Integer> arrayInt = new ArrayList<Integer> ();
arrayInt.add (10);
Cela fonctionne, plus besoin de construire explicitement un Integer....
Certes, mais ce n'est que du sucre syntaxique. Le compilateur génère

l'Integer par derrière. Donc surtout au runtime.
--
Olivier

Avatar
Kupee
Olivier Thomann wrote:
Certes, mais ce n'est que du sucre syntaxique. Le compilateur génère
l'Integer par derrière. Donc surtout au runtime.


Ouaip d'ailleurs on sait de quelle manière il le génère ?
Avec un new Integer ou un Integer.valueOf ?