9
votes

Comment créer un tableau de vecteur en Java?

Alors, je veux un éventail de vecteur d'entier en Java.

Si je mets xxx

i get ne peut pas l'erreur de compilation

Impossible de créer un tableau générique de vecteur

devrais-je utiliser xxx

à la place? (qui donne un avertissement)

ou devrais-je simplement utiliser un éventail de vecteurs et utiliser le vecteur de vecteur à la place?

Note: je ne veux pas de vecteur < Entier>, je veux un vecteur [] pour créer une matrice d'entiers sans utiliser d'entier [] [].


4 commentaires

Suis-je le seul à avoir du mal à suivre ce train de pensée?


Vous devriez vraiment utiliser Liste au lieu de vecteur . 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


5 Réponses :


3
votes
Vector<Integer> vector = new Vector<Integer>();
Vector[] vectors = {vector};

5 commentaires

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 est mieux je crois.


Les tableaux génériques ne sont pas autorisés dans Java 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).



6
votes

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);


2 commentaires

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.



1
votes

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];


0 commentaires

0
votes

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();


0 commentaires

0
votes

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>();
    }


0 commentaires