Alors, je veux un éventail de vecteur d'entier en Java.
Si je mets p> i get ne peut pas l'erreur de compilation p> Impossible de créer un tableau générique de vecteur p>
blockQuote> devrais-je utiliser p> à la place? (qui donne un avertissement) p> ou devrais-je simplement utiliser un éventail de vecteurs et utiliser le vecteur de vecteur à la place? p>
5 Réponses :
Vector<Integer> vector = new Vector<Integer>(); Vector[] vectors = {vector};
Cela ne crée qu'un seul vecteur, pas un éventail de vecteurs.
Cela semble être envie qu'il veuille. Je suis toujours confus quant à ce qu'il veut vraiment dire par "un tableau de vecteur".
J'ai besoin d'une gamme de vecteurs, pas seulement d'un vecteur. Il est similaire à entier [] [], mais avec la matrice intérieure étant un vecteur au lieu d'une matrice, car elle doit augmenter. Je pourrais simplement utiliser le vecteur de vecteur, mais l'extérieur ne l'augmente pas, il pourrait simplement être un tableau.
Oui, les dernières œuvres, mais le vecteur
Les tableaux génériques ne sont pas autorisés dans Java i> mal. Les tableaux de types paramétrés sont autorisés et essentiels à la langue Java. Après toutes les classes de collecte basées sur la matrice, utilisez-les en interne (principalement implicite mais parfois explicite).
Java n'a tout simplement aucun moyen de créer des tableaux d'un type paramétré sans obtenir ou supprimer un avertissement. Donc, le meilleur que vous puissiez obtenir est-ce:
List<List<Integer>> list = new ArrayList<List<Integer>>(100);
Oui, je pense que supprimer l'avertissement ou simplement utiliser le vecteur de vecteur est le seul moyen.
Je sais que la réponse a 10 ans, mais la première solution ne compile plus.
Les vecteurs sont soutenus par des tableaux et se développeront ou se rétréciront à une taille suffisante pour maintenir l'élément que vous insérez. En tant que tel, vous pouvez pré-allouer un vecteur, mais vous ne devez pas spécifier la taille au moment de la création.
// array of vectors Vector[] vectors = new Vector[100];
Pour créer un tableau de générique, vous devez créer le non-générique et le jeter. Vous devez également initialiser tous les éléments de la matrice, sinon ils seront nuls. : (
TIntArrayList[] anArray = new TIntArrayList[100]; for(int i = 0; i < anArray.length; i++) anArray[i] = new TIntArrayList();
Pour éviter la coulée de type, considérez cette implémentation:
Vector<Integer>[] intVectorArray; Vector[] temp = new Vector[desiredSize]; intVectorArray = temp; for(int i = 0;i<intVectorArray.length;i++){ hashArray[i] = new Vector<Integer>(); }
Suis-je le seul à avoir du mal à suivre ce train de pensée?
Vous devriez vraiment utiliser
Liste code>
au lieu devecteur code>. Y a-t-il une raison particulière que vous n'utilisez pas de tableau de tableaux ou d'une liste de listes?
La liste est une interface, vous voulez probablement dire ArrayList.
Dupliqué possible de syntaxe de génériques Java pour les tableaux