Ce tutoriel explique tout sur la structure de données vectorielle en Java avec des exemples. Vous apprendrez à créer, initialiser, trier et utiliser un vecteur Java dans vos programmes :
Un vecteur peut être défini comme un tableau dynamique qui peut croître ou décroître de lui-même, c'est-à-dire que le vecteur croît lorsque des éléments lui sont ajoutés et décroît lorsque des éléments lui sont retirés.
Ce comportement est différent de celui des tableaux, qui sont statiques, mais comme les tableaux, les éléments d'un vecteur sont accessibles à l'aide d'indices entiers.
Un vecteur peut être considéré comme une structure de données similaire à un autre tableau dynamique, ArrayList, à l'exception des deux différences ci-dessous :
- Le vecteur est synchronisé, c'est-à-dire que toutes les méthodes du vecteur sont marquées "synchronisées" et donc, une fois qu'une méthode est invoquée, la même méthode ne peut pas être invoquée à moins que l'appel précédent ne soit terminé.
- La classe vectorielle possède de nombreuses méthodes qui ne font pas partie du cadre des collections mais de ses méthodes héritées.
Classe vectorielle Java
Une classe Vecteur fait partie de la classe " java.util "Un vecteur est un tableau d'objets ou un vecteur d'objets.
La déclaration de la classe Vector est donnée ci-dessous :
public class Vector extends Object implements List, Cloneable, Serializable
Comme indiqué ci-dessus, une classe Vecteur étend " java.lang.object "et met en œuvre les interfaces List, Cloneable et Serializable.
Comment créer un vecteur en Java ?
Vous pouvez créer un objet Vector à l'aide de l'une des méthodes de construction Vector suivantes.
Constructeur Prototype | Description |
---|---|
vecteur() | Il s'agit du constructeur par défaut de la classe Vector, qui crée un vecteur vide de taille 10. |
vector(int initialCapacity) | Ce constructeur surchargé construit un objet Vector vide avec la capacité = initialCapacity. |
vector(int initialCapacity, int capacityIncrement) | Cette méthode de construction crée un objet Vector vide avec la capacité initiale et l'incrément de capacité spécifiés. |
Vector( Collection c) | Un objet Vector est créé avec les éléments initiaux de la collection spécifiée c. |
Examinons chacun des constructeurs permettant d'initialiser les objets Vecteur.
Initialiser le vecteur
(i) Vecteur()
Il s'agit du constructeur par défaut de la classe Vector. Lorsque vous invoquez ce constructeur, un objet Vector de taille 10 par défaut est créé.
La syntaxe générale de cette méthode est la suivante :
Vecteur objet = nouveau Vecteur() ;
Par exemple,
Vecteur vec1 = nouveau Vecteur () ;
L'instruction ci-dessus crée un nouveau vecteur "vec1" de taille 10.
(ii) Vecteur(int capacité initiale)
Le constructeur surchargé de la classe Vector accepte 'initialCapacity' comme argument. Ce constructeur crée un objet Vector avec la capacité spécifiée.
La syntaxe générale de la méthode est la suivante :
Vecteur objet = nouveau Vecteur (capacité initiale) ;
Par exemple,
Vecteur vec1 = nouveau Vecteur (10) ;
L'instruction de programmation ci-dessus créera un objet vectoriel "vec1" avec une capacité de 10, c'est-à-dire que ce vecteur peut stocker jusqu'à 10 éléments.
(iii) Vecteur(int capacité initiale, int capacité incrément)
Il s'agit d'un autre constructeur surchargé de la classe Vector, qui crée un objet Vector avec la capacité initiale et l'incrément de capacité spécifiés.
La syntaxe générale de cette méthode est la suivante :
Vector object = new Vector (initialCapacity, capacityIncrement) ;
Par exemple,
Vecteur vec1 = nouveau Vecteur(5,10) ;
Dans l'énoncé ci-dessus, la capacité initiale du vecteur est de 5 et l'incrément est de 10. Cela signifie que lorsque le 6e élément est inséré dans le vecteur, la capacité du vecteur sera incrémentée à 15 (5 + 10). De même, lorsque le 16e élément est inséré, la capacité du vecteur sera étendue à 25 (15 + 10).
(iv) Vecteur(Collection c)
Le dernier constructeur surchargé de la classe Vector prend en argument une collection prédéfinie et crée un Vector avec tous les éléments de cette collection comme éléments.
La syntaxe générale est la suivante :
Vecteur objet = nouveau Vecteur (Collection c) ;
Par exemple,
Vector vec1 = new Vector(aList) ; where aList = {1,2,3,4,5} ;
L'instruction ci-dessus crée un vecteur "vec1" dont les éléments initiaux sont {1,2,3,4, 5}.
En gardant toutes ces descriptions à l'esprit, nous pourrons mettre en œuvre un programme Vector pour mieux comprendre ces constructeurs.
Méthodes vectorielles en Java
Les méthodes suivantes sont prises en charge par la classe Vector en Java.
Nom de la méthode | Prototype | Description |
---|---|---|
ajouter | Booléen add(E e) | Ajoute l'élément donné à la fin du vecteur. |
Void add(int index, E element) | Ajoute un élément au vecteur à l'index spécifié. | |
addAll | Boolean addAll(Collection c) | Ajoute tous les éléments de la collection donnée à la fin du vecteur. |
Boolean addAll(int index, Collection c) | Ajoute tous les éléments de la collection spécifiée à l'index spécifié. | |
élément additionnel | void addElement(E obj) | Ajoute l'élément spécifié à la fin du vecteur en augmentant la taille du vecteur. |
Capacité | Int capacité() | Renvoie la capacité actuelle du vecteur. |
Clair | Void clear() | Efface les éléments du vecteur. |
Clone | Objet clone() | Clone le vecteur. |
Contient | Booléen contains(Object o) | Vérifie si le vecteur contient l'élément spécifié. |
contientTout | Boolean containsAll(Collection c) | Vérifie si le vecteur contient tous les éléments présents dans la collection donnée. |
copyInto | Void copyInto(Object[] anArray) | Copie les éléments du vecteur dans un tableau donné. |
ElementAt | E ElementAt(int index) | Renvoie l'élément du vecteur à l'index spécifié. |
Éléments | Éléments d'énumération() | Renvoie des composantes énumérées pour le vecteur. |
assurerCapacité | Void ensureCapacity(int minCapacity) | Augmente la capacité du vecteur pour atteindre la capacité minimale spécifiée. |
Nom de la méthode | Prototype | Description |
---|---|---|
Équivalents | Booléen equals(Object o) | Compare le vecteur actuel avec le vecteur spécifié pour vérifier s'ils sont égaux. |
premier élément | E firstElement() | Renvoie le premier élément du vecteur à l'index 0. |
Obtenir | E get(int index) | Renvoie l'élément du vecteur à l'index spécifié. |
code de hachage | int hashCode() | Renvoie la valeur du code de hachage pour le vecteur. |
indexOf | int indexOf(Object o) | trouve l'indice de la première occurrence de l'élément donné dans le vecteur ; -1 si l'élément n'est pas présent dans le vecteur. |
int indexOf(Object o, int index) | Recherche l'élément spécifié dans le vecteur à partir de l'index donné dans le sens direct ; renvoie l'index si l'élément est trouvé, sinon -1 si l'élément n'est pas trouvé. | |
insertElementAt | Void insertElementAt(E obj, int index) | Insère l'objet donné dans le vecteur à l'index donné. |
isEmpty | Booléen isEmpty() | Vérifie si le vecteur est vide. |
Itérateur | Iteratoriterator() | Renvoie un itérateur utilisé pour parcourir les éléments du vecteur. |
dernier élément | E lastElement() | Renvoie le dernier élément du vecteur. |
dernierIndexOf | Int lastIndexOf(Object o) | Recherche dans le vecteur la dernière occurrence d'un élément donné et renvoie l'index, ou renvoie -1 si l'élément n'est pas trouvé. |
Int lastIndexOf(Object o, int index) | Commence à rechercher la dernière occurrence de l'élément donné à partir de l'index donné vers l'arrière. renvoie l'index si l'élément est trouvé, sinon renvoie -1. | |
listIterator | ListIteratorlistIterator() | Renvoie un itérateur de liste sur les éléments du vecteur. |
ListIteratorlistIterator(int index) | Renvoie un itérateur de liste sur les éléments du vecteur à partir de l'index donné. |
Nom de la méthode | Prototype | Description |
---|---|---|
Retirer | E remove(int index) | Supprime du vecteur l'élément à l'index donné. |
Booléen remove(Objet o) | Supprime la première occurrence de l'élément donné du vecteur. Si l'élément n'est pas présent, rien ne se passe dans le vecteur. | |
removeAll | Booléen removeAll(Collection c) | Supprime tous les éléments du vecteur qui sont présents dans la collection donnée. |
void removeAll Elements() | Supprime tous les éléments du vecteur, le ramenant ainsi à une taille nulle. | |
removeElement | Booléen removeElement(Object obj) | Supprime du vecteur la première occurrence de l'élément donné. |
void removeElementAt(int index) | Supprime l'élément à l'index donné. | |
removeRange | protected void removeRange(int fromIndex, int toIndex) | Supprime tous les éléments du vecteur dans l'intervalle donné de fromIndex (inclusif), totoIndex (exclusif). |
retainAll | Booléen retainAll(Collection c) | Contrairement à "removeAll", la méthode retainAll conserve les éléments du vecteur qui correspondent aux éléments de la collection spécifiée. |
fixer | E set(int index, E element) | Remplace la valeur à l'index donné par le nouvel élément fourni. |
Void set ElementAt(E obj, int index) | Définit les éléments donnés à l'index donné. | |
setSize | Void setSize(int newSize) | Définit la taille de ce vecteur. |
Taille | int size() | Renvoie le nombre d'éléments de ce vecteur ou la longueur du vecteur. |
subList | ListsubList(intfromIndex, inttoIndex) | Renvoie une vue ou une sous-liste du vecteur allant de fromIndex à toIndex. |
toArray | Object[] toArray() | Convertit le vecteur donné en un tableau contenant tous les éléments du vecteur dans l'ordre donné. |
T[] toArray(T[] a) | Renvoie un tableau du type spécifié contenant tous les éléments du vecteur. | |
toString | Chaîne toString() | Renvoie une représentation sous forme de chaîne de caractères du vecteur. |
trimToSize | void trimToSize() | Découpe le vecteur pour l'adapter à la taille actuelle. |
Mise en œuvre du vecteur
Le programme Java suivant illustre l'utilisation de toutes les méthodes de construction décrites ci-dessus.
import java.util.* ; public class Main{ public static void main(String[] args) { //Créer les vecteurs v1, v2,v3 et v4 Vector v1 = new Vector() ; //un vecteur avec constructeur par défaut Vector v2 = new Vector(20) ; // un vecteur de taille donnée //initialiser le vecteur v2 avec les valeurs v2.add(10) ; v2.add(20) ; v2.add(30) ; Vector v3 = new Vector(30, 10) ; // un vecteur de taille et d'incrément donnés // créer un vecteur v4 avec les valeurs suivantescollection donnée List aList = new ArrayList() ; aList.add("one") ; aList.add("two") ; Vector v4 = new Vector(aList) ; //imprime le contenu de chaque vecteur System.out.println("Vector v1 Contents :" + v1) ; System.out.println("Vector v2 Contents :" + v2) ; System.out.println("Vector v3 Contents :" + v3) ; System.out.println("Vector v4 Contents :" + v4) ; } } } }.
Sortie :
Le programme ci-dessus contient quatre vecteurs. Le premier v1 est créé avec un constructeur par défaut. Le deuxième vecteur v2 est créé avec une capacité initiale de 20. Quelques éléments sont ensuite ajoutés à v2. Le troisième vecteur est créé avec une capacité initiale de 30 et un incrément de 10.
Ensuite, nous créons une liste de tableaux et créons un quatrième vecteur v4 avec la liste de tableaux comme argument. Enfin, nous affichons le contenu de chacun de ces vecteurs.
Notez le contenu du quatrième vecteur v4. Comme nous avons fourni ArrayList comme argument, le contenu de ArrayList devient le contenu de v4.
Exemple de vecteur complet
Mettons maintenant en œuvre un autre programme qui va démontrer la création de vecteurs, en y ajoutant des éléments et en affichant leur contenu.
import java.util.* ; public class Main { public static void main(String args[]) { //Créer un vecteur vide de nombres pairs Vector evenVector= new Vector () ; //Ajouter des éléments dans le vecteur evenVector.add(2) ; evenVector.add(4) ; evenVector.add(6) ; evenVector.add(8) ; evenVector.add(10) ; evenVector.add(12) ; evenVector.add(14) ; evenVector.add(16) ; //Afficher le vecteur System.out.println("VectorevenVector contents : " +evenVector) ; //supprime la première occurrence d'un élément 4 en utilisant la méthode remove System.out.println("\nPremière occurrence de l'élément 4 supprimé : "+evenVector.remove((Integer)4))) ; //Affiche le vecteur System.out.println("\nVector contents after remove operation : " +evenVector) ; //Supprime l'élément à l'index 4 & ; affiche le vecteur System.out.println("\nSupprime l'élément à l'index 4 :" +evenVector.remove(4)) ; System.out.println("\nContenu du vecteur après suppression : " +evenVector) ; //code de hachage du vecteur System.out.println("\nCode de hachage du vecteur = "+evenVector.hashCode()) ; //Obtenir l'élément à l'indice 1 System.out.println("\nL'élément à l'indice 1 est = "+evenVector.get(1)) ; } } } }.
Sortie :
Prenons un autre exemple de vecteur. Dans ce programme, nous allons utiliser un vecteur de chaînes de caractères Nous manipulons ce vecteur en ajoutant des éléments, puis nous imprimons sa taille et sa capacité.
import java.util.* ; public class Main { public static void main(String args[]) { // créer un vecteur avec une capacité initiale = 2 Vector fruits_vec = new Vector(2) ; // ajouter des éléments au vecteur fruits_vec.addElement("Raisin") ; fruits_vec.addElement("Melon") ; fruits_vec.addElement("Kiwi") ; fruits_vec.addElement("Pomme") ; // imprimer la taille et la capacité actuelles du vecteur System.out.println("Taille du vecteur :"+fruits_vec.size()) ; System.out.println("Incrément de capacité du vecteur par défaut : "+fruits_vec.capacity()) ; //ajoute d'autres éléments au vecteur fruits_vec.addElement("Orange") ; fruits_vec.addElement("Mangue") ; fruits_vec.addElement("Fig") ; //imprime à nouveau la taille et la capacité actuelles System.out.println("Taille du vecteur après ajout : "+fruits_vec.size()) ; System.out.println("Capacité du vecteur après incrément :"+fruits_vec.capacity()) ; //Imprimer les éléments vectoriels Enumeration fruits_enum = fruits_vec.elements() ; System.out.println("\nLes éléments vectoriels sont :") ; while(fruits_enum.hasMoreElements()) System.out.print(fruits_enum.nextElement() + " ") ; } } }.
Sortie :
Trier un vecteur
Vous pouvez également trier un vecteur selon un ordre spécifique. Pour trier un vecteur, vous devez utiliser la méthode Collections.sort () du Java Collections Framework.
L'exemple suivant montre un tri vectoriel.
import java.util.* ; public class Main { public static void main(String arg[]) { //Créer un vecteur vide Vector oddVector = new Vector() ; //Ajouter des éléments au vecteur oddVector.add(1) ; oddVector.add(11) ; oddVector.add(7) ; oddVector.add(3) ; oddVector.add(5) ; //Imprimer les éléments du vecteur System.out.println("Vector elements : "+oddVector) ; //trier le vecteur à l'aide de la méthode Collections.sortCollections.sort(oddVector) ; //imprime le vecteur trié System.out.println("Vector elements after sorting : "+oddVector) ; } }
Sortie :
Le programme ci-dessus crée un vecteur de nombres impairs, puis utilise la méthode Collections.sort() pour trier le vecteur.
Vecteur 2D (bidimensionnel)
Un vecteur 2d est un vecteur dont chacun des éléments est un vecteur. Il peut également être appelé "vecteur de vecteurs".
L'exemple ci-dessous illustre le vecteur 2d.
import java.util.* ; public class Main { public static void main(String args[]) { //définir et initialiser un vecteur Vector inner_vec = new Vector() ; inner_vec.add("Software") ; inner_vec.add("Testing") ; inner_vec.add("Java") ; inner_vec.add("Tutorials") ; //définir un autre vecteur et y ajouter le premier Vector outer_vec = new Vector() ; outer_vec.add(inner_vec) ; String str ; //afficher le contenu devecteur de vecteurs System.out.println("Contenu du vecteur de vecteurs :") ; for(int i=0;iSortie :
Dans le programme ci-dessus, nous avons un vecteur de quatre éléments. Ensuite, nous déclarons un autre vecteur et ajoutons le vecteur précédent comme élément du second vecteur. Notez la façon dont on accède aux éléments du vecteur. À partir de la boucle for, vous pouvez conclure que le premier élément du vecteur extérieur (à l'indice 0) est le premier vecteur ou le vecteur intérieur.
Ainsi, dans la boucle, nous gardons l'index du vecteur extérieur à 0 et nous parcourons le vecteur intérieur pour en afficher tous les éléments.
Convertir un vecteur en tableau
Prenons l'exemple suivant de conversion d'un vecteur en tableau. Pour convertir un vecteur en tableau, nous utilisons la méthode "toArray" de la classe Vector.
Dans l'exemple de programmation suivant En utilisant la méthode toArray de la classe Vector, nous convertissons le Vector en un tableau de chaînes de caractères en passant l'objet tableau de chaînes de caractères comme argument.
import java.util.Vector ; public class Main { public static void main(String[] args) { // Créer un vecteur d'éléments de chaîne Vector color_vector = new Vector() ; // Ajouter des éléments au vecteur color_vector.add("Violet") ; color_vector.add("Indigo") ; color_vector.add("Bleu") ; color_vector.add("Vert") ; color_vector.add("Jaune") ; color_vector.add("Orange") ; color_vector.add("Rouge") ; //Convertir le vecteur en un vecteur d'éléments de chaîne.Tableau de chaînes utilisant la méthode toArray String[] colorsArray = color_vector.toArray(new String[color_vector.size()]) ; //imprimer les éléments du tableau System.out.println("String Array Elements :") ; for(String val:colorsArray){ System.out.print(val + " ") ; } } }.Sortie :
Vecteur ou tableau
Voici quelques-unes des différences entre un vecteur et un tableau.
Vecteur Tableau Le vecteur est dynamique et sa taille augmente ou diminue au fur et à mesure que des éléments sont ajoutés ou supprimés. Les tableaux sont statiques et leur taille reste fixe une fois qu'ils sont déclarés. Les vecteurs ne peuvent stocker que des objets. Les tableaux peuvent stocker des types primitifs ainsi que des objets. Il fournit une méthode size() pour déterminer la taille. Fournit la propriété de longueur pour déterminer la longueur. Pas de dimensions conceptuelles mais peut être créé comme un vecteur de vecteurs, normalement appelé vecteur 2d. Les tableaux prennent en charge les dimensions. Le vecteur est synchronisé. Le tableau n'est pas synchronisé. Le vecteur est plus lent que le tableau. Le tableau est plus rapide. Réserve un espace de stockage supplémentaire lorsque la capacité est augmentée. Ne réserve pas d'espace de stockage supplémentaire. Assure la sécurité des types en prenant en charge les génériques. Pas de support générique. Vecteur vs liste de tableaux
Cette section traite de la différence entre Vector et ArrayList en Java.
Vecteur Liste de tableaux Présent depuis la version initiale de Java (version JDK 1.0). Introduit dans Java depuis le JDK 1.2 Le vecteur est une classe héritée de Java. ArrayList fait partie du Java Collections Framework. Le vecteur double de taille lorsque sa capacité est atteinte. La liste de tableaux croît de moitié lorsque sa capacité est atteinte. Les méthodes vectorielles sont synchronisées. ArrayList n'est pas synchronisé. Le vecteur utilise l'énumérateur et l'itérateur pour le parcourir. ArrayList n'utilise que l'Iterator. Les opérations vectorielles sont plus lentes. ArrayList est plus rapide. Le vecteur a une taille d'incrément qui permet d'augmenter la taille du vecteur. ArrayList ne fournit pas de taille d'incrémentation. Vector est sécurisé pour les threads, ce qui signifie que l'utilisation de Vector à partir de plusieurs threads est autorisée et sûre. ArrayList n'est pas sûr pour les threads. Questions fréquemment posées
Q #1) Qu'est-ce qu'un vecteur en Java ?
Réponse : En Java, un vecteur peut être défini comme un tableau d'objets extensible. Comme les tableaux, les éléments d'un vecteur sont accessibles à l'aide d'indices.
Q #2) Le vecteur est-il ordonné en Java ?
Réponse : Oui, un vecteur est ordonné et conserve l'ordre d'insertion des éléments.
Q #3) Le vecteur est-il sûr pour les threads en Java ?
Réponse : Oui. En Java, la classe Vector est sûre pour les threads. Comme la classe Vector est synchronisée, elle est sûre pour les threads, c'est-à-dire que vous pouvez utiliser la classe Vector à partir de plusieurs threads et qu'elle est sûre.
Q #4) Pourquoi utilise-t-on un vecteur en Java ?
Réponse : La raison la plus importante pour laquelle les vecteurs sont utilisés en Java est qu'ils grandissent et rétrécissent automatiquement. Ils sont dynamiques, c'est pourquoi ils sont préférés aux tableaux.
Q #5) Qu'est-ce qui est le mieux - ArrayList ou vector ?
Réponse : Du point de vue des performances, ArrayList est plus rapide que Vector, car Vector est synchronisé, ce qui le rend plus lent.
Conclusion
Dans ce tutoriel, nous avons commencé avec la structure de données Vecteur en Java. Les Vecteurs sont presque similaires à un tableau dans lequel les éléments du Vecteur sont accessibles en utilisant des indices familiers. Les Vecteurs sont appelés tableaux dynamiques et contrairement aux tableaux, la taille du Vecteur croît et décroît automatiquement.
Les vecteurs disposent également de fonctions de capacité et d'incrémentation qui peuvent être utilisées pour créer et réserver un espace de stockage supplémentaire pour des ajouts futurs. Le vecteur est une classe héritée du paquet java.util de Java et il est synchronisé et sûr pour les threads.
Nous devrions donc préférer les vecteurs lorsque nous avons besoin d'une taille dynamique et lorsque nous travaillons dans un environnement multithread.