100% ont trouvé ce document utile (1 vote)
25 vues25 pages

Création et gestion des tableaux en Java

Transféré par

Melissa Yazli
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (1 vote)
25 vues25 pages

Création et gestion des tableaux en Java

Transféré par

Melissa Yazli
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

2.

Les tableaux
21

 Les tableaux représentent des collections de valeurs ou


d’objets. En Java, les tableaux sont eux-mêmes des
objets.

 Donc une variable de type tableau peut avoir la


valeur null.

 Une variable de type tableau se déclare en ajoutant des


crochets à la suite du type :

int[] tableau;
2. Les tableaux
22

 Initialisation

 Il est possible d’initialiser une variable de type tableau à partir


d’une liste fixe délimitée par des accolades.

int[] tableauEntier = {1, 2, 3, 4, 5};

String[] tableauChaine = {"Bonjour", "le", "monde"};


2. Les tableaux
23

 Création avec new

 Les tableaux étant des objets, il est également possible de les créer
avec le mot-clé new.

int[] tableauEntier = new int[] {1, 2, 3, 4};

String[] tableauChaine = new String[] {"Bonjour", "le", "monde"};


2. Les tableaux
24

 Création avec new

 Si on ne souhaite pas donner de valeurs d’initialisation pour les


éléments du tableau, il suffit d’indiquer uniquement le nombre
d’éléments du tableau entre crochets.

int[] tableauEntier = new int[5];

String[] tableauChaine = new String[3];


2. Les tableaux
25

 Création avec
new Valeur par défaut d’un élément d’un tableau
Type Valeur d’initialisation
boolean false
 Dans ce cas, les
char '\0'
éléments d’un
byte 0
tableau sont tout
short 0
de même
int 0
initialisés avec une
long 0
valeur par défaut
float 0.0
(comme pour un
double 0.0
attribut) :
référence d’objet null
2. Les tableaux
26

 Création avec new

 La taille du tableau peut être donnée par une constante, une


expression ou une variable.

 int t = 6; int[] tableau = new int[t * t * 2];


2. Les tableaux
27

 Création avec new

 Par contre, la taille d’un tableau est donné à sa création et ne peut


plus être modifiée.

 Il n’est donc pas possible d’ajouter ou d’enlever des éléments à un


tableau.

 Dans ce cas, il faut créer un nouveau tableau avec la taille voulue et


copier le contenu du tableau d’origine vers le nouveau tableau.
2. Les tableaux
28

 Création avec new

 Un tableau dispose de l’attribut length permettant de connaître sa


taille. L’attribut length ne peut pas être modifié.

int t = 6; int[] tableau = new int[t * t * 2];

[Link]([Link]); // 72
2. Les tableaux
29

 Accès aux éléments d’un tableau

 L’accès aux éléments d’un tableau se fait en donnant l’indice d’un


élément entre crochets. Le premier élément d’un tableau a
l’indice 0. Le dernier élément d’un tableau a donc comme indice la
taille du tableau moins un.

int[] tableau = {1, 2, 3, 4, 5};


int premierElement = tableau[0];
int dernierElement = tableau[[Link] - 1];
2. Les tableaux
30

 Accès aux éléments d’un tableau

 Il est possible de parcourir tous les éléments d’un tableau avec


un for amélioré.

int[] tableau = {1, 2, 3, 4, 5};

for (int v : tableau) { [Link](v); }


 L’utilisation d’un for amélioré est préférable lorsque cela est
possible. Par contre, il n’est pas possible avec un for amélioré de
connaître l’indice de l’élément courant.
2. Les tableaux
31

 Accès aux éléments d’un tableau

 Si le programme tente d’accéder à un indice de tableau trop grand


(ou un indice négatif), une erreur de type survient.

int[ ] tableau = {1, 2, 3, 4, 5};

int value = tableau[1000]; // ERREUR À L'EXÉCUTION


2. Les tableaux
32

 Tableau multi-dimensionnel

 Il est possible d’initialiser un tableau à plusieurs dimensions.

int[ ][ ] tableauDeuxDimensions = {{1, 2}, {3, 4}};

int[ ][ ][ ] tableauTroisDimensions = {{{1, 2}, {3, 4}}, {{5, 6}, {7, 8}}};

 [Link](tableauDeuxDimensions[0][1]);
[Link](tableauTroisDimensions[0][1][0]);
2. Les tableaux
33

 Tableau multi-dimensionnel

 Il est également possible de créer un tableau multi-dimensionnel


avec le mot-clé new.

 int[ ][ ] tableauDeuxDimensions = new int[2][10];

 int[ ][ ][ ] tableauTroisDimensions = new int[2][10][5];


2. Les tableaux
34

 Tableau multi-dimensionnel

 Il n’existe pas réellement de type tableau multi-dimensionnel.

 Le compilateur le traite comme un tableau de tableaux.

 Il est donc autorisé de déclarer des tableaux sans préciser les


dimensions au delà de la première et d’affecter ensuite des tableaux à
chaque valeur.

 Ces tableaux peuvent d’ailleurs avoir des tailles différentes.

int[ ][ ] tableauDeuxDimensions = new int[2][ ];


tableauDeuxDimensions[0] = new int[10];
tableauDeuxDimensions[1] = new int[5];
2. Les tableaux
35

 Conversion en chaîne de caractères

 Si on affiche un tableau sur la sortie standard, vous serez


certainement surpris.

int[] tableau = {1, 2, 3, 4, 5}; [Link](tableau);

 La code précédent affichera sur la sortie standard quelque chose


comme ceci :

[I@ee7d9f1
2. Les tableaux
36

 Conversion en chaîne de caractères

 Pour obtenir une chaîne de caractères donnant le contenu du


tableau, il faut utiliser la classe outil [Link] qui contient
des méthodes de classe toString adaptées pour les tableaux.

int[] tableau = {1, 2, 3, 4, 5};


[Link]([Link](tableau));
2. Les tableaux
37

 Égalité de deux tableaux

 En Java, il n’est pas possible d’utiliser l’opérateur == pour


comparer deux objets. En effet, cet opérateur compare la référence
des variables. Cela signifie qu’il indique true uniquement si les
deux variables référencent le même objet.

int[] tableau1 = {1, 2, 3, 4, 5};


int[] tableau2 = {1, 2, 3, 4, 5};

[Link](tableau1 == tableau1); // true


[Link](tableau1 == tableau2); // false
2. Les tableaux
38

 Égalité de deux tableaux

 La classe outil [Link] fournit des méthodes de


classe equals pour comparer des tableaux en comparant un à un
leurs éléments.

 int[] tableau1 = {1, 2, 3, 4, 5};


 int[] tableau2 = {1, 2, 3, 4, 5};

[Link]([Link](tableau1, tableau1)); // true


[Link]([Link](tableau1, tableau2)); // true
2. Les tableaux
39

 Tri & recherche

 Tout d’abord, [Link] fournit plusieurs méthodes sort.


Celles prenant un tableau de primitives en paramètre trient selon
l’ordre naturel des éléments.

int[] tableau = {1, 5, 4, 3, 2};


[Link](tableau);
[Link]([Link](tableau));
2. Les tableaux
40

 Tri & recherche

 Il est également possible de trier certains tableaux d’objets. Par


exemple, il est possible de trier des tableaux de chaînes de
caractères.

String[] tableau = {"premier", "deuxième", "troisième", "quatrième"};


[Link](tableau);
[Link]([Link](tableau));
2. Les tableaux
41

 Tri & recherche

 [Link] fournit des méthodes binarySearch qui


implémentent l’algorithme de recherche binaire.

int[] tableau = {10, 20, 30, 40, 50};


[Link]([Link](tableau, 20)); // 1
[Link]([Link](tableau, 45)); // -5
2. Les tableaux
42

 Copie d’un tableau

 [Link] fournit des méthodes de


classe copyOf et copyOfRange pour réaliser des copies de tableaux.

int[] tableau = {1, 2, 3, 4, 5};


int[] nouveauTableau = [Link](tableau, [Link] - 1);
[Link]([Link](nouveauTableau)); // [1, 2, 3, 4]
nouveauTableau = [Link](tableau, [Link] + 1);
[Link]([Link](nouveauTableau)); // [1, 2, 3, 4, 5, 0]
nouveauTableau = [Link](tableau, 2, [Link]);
[Link]([Link](nouveauTableau)); // [3, 4, 5]
nouveauTableau = [Link](tableau, 2, 3);
[Link]([Link](nouveauTableau)); // [3]
2. Les tableaux
43

 Copie d’un tableau

 Pour réaliser une copie, il existe également la Méthode


[Link]. Contrairement aux précédentes, cette
méthode ne crée pas de nouveau tableau, elle copie d’un tableau
existant vers un autre tableau existant.

int[] tableau = {1, 2, 3, 4, 5};


int[] destination = new int[3];

[Link](tableau, 1, destination, 0, [Link]);


[Link]([Link](destination)); // [2, 3, 4]
2. Les tableaux
44

 Typage d’un tableau

 Un tableau est un objet. Cela implique qu’il respecte les règles de


typage du langage. Ainsi on ne peut mettre dans un tableau que
des valeurs qui peuvent être affectées au type des éléments

String[] tableau = new String[10];


tableau[9] = "Bonjour"; // OK
tableau[8] = new Voiture(); // ERREUR DE COMPILATION
2. Les tableaux
45

 Conversion d’un tableau en liste

 Pour transformer un tableau d’objets en liste, on utilise la


méthode [Link].

 La liste obtenue possède une taille fixe. Par contre le contenu de la


liste est modifiable, et toute modification des éléments de cette
liste sera répercutée sur le tableau.

String[] tableau = {"Bonjour", "le", "monde"};


[Link]<String> liste = [Link](tableau);
[Link](0, "Hello"); [Link](1, "the"); [Link](2, "world");
[Link]([Link](tableau)); // [Hello, the, world]

Vous aimerez peut-être aussi