1. Arrays
classe
Comme nous l'avons noté précédemment, les tableaux sont très utiles et fréquemment utilisés en programmation.
Les créateurs de Java ont très vite remarqué que les programmeurs Java écrivaient souvent le même code lorsqu'ils travaillaient avec des tableaux. Par exemple, copier une partie d'un tableau dans un autre tableau, coder pour remplir chaque cellule d'un tableau avec la même valeur, afficher le contenu d'un tableau dans un format pratique, etc.
C'est pourquoi ils ont créé la Arrays
classe spéciale (son nom complet est java.util.Arrays
), en y mettant les actions les plus populaires liées aux tableaux.
Il propose de nombreuses méthodes pour chaque occasion, mais nous n'en examinerons d'abord que 10 - les plus simples et les plus souvent utilisées.
2.Arrays.toString()
La première méthode que nous allons examiner s'appelle Arrays.toString()
. Mais d'abord, un peu de contexte.
Chaque tableau en Java a une toString()
méthode qui renvoie une "représentation textuelle du tableau". Vous pouvez obtenir une représentation textuelle d'un tableau à l'aide de l'instruction suivante :
String str = name.toString();
Où name
est le nom de la variable de tableau et str
est le nom de la variable qui stockera la représentation sous forme de chaîne du tableau.
Mais si vous essayez d'imprimer le tableau à l'écran en utilisant la méthode, vous verrez très probablement quelque chose comme ceci :System.out.println(name)
I@37afeb11
La première lettre I
signifie qu'il s'agit d'un int
tableau et les symboles suivants @
sont l'adresse du tableau en mémoire. D'une part, c'est précisément l'information stockée dans la variable tableau, mais d'autre part, nous nous attendions à quelque chose de différent, n'est-ce pas ?
Nous voulions voir les valeurs dans le tableau ! Et c'est exactement pourquoi ils ont trouvé la Arrays.toString()
méthode — pour afficher les valeurs d'un tableau. Nous l'appelons ainsi :
String str = Arrays.toString(name);
Exemples:
|
La str variable contiendra la chaîne :
|
|
La str variable contiendra la chaîne :
|
|
La str variable contiendra la chaîne :
|
3.Arrays.deepToString()
Mais si vous essayez de convertir un tableau à deux dimensions en une using the Arrays.toString()
méthode de chaîne (pour l'afficher), vous verrez quelque chose de familier :
[I@37afeb11, I@37afeb21, I@37afeb31]
Tout cela est dû au fait que les cellules d'un tableau à deux dimensions stockent des références à des tableaux à une dimension. Et comment les tableaux unidimensionnels sont-ils convertis en chaîne ? Exactement comme vous le voyez ci-dessus.
Ce qui peut être fait? Comment afficher correctement un tableau à deux dimensions ?
À cette fin, la Arrays
classe a une autre méthode spéciale — deepToString()
. L'appel ressemble à ceci:
String str = Arrays.deepToString(name);
Cette méthode peut être transmise à des tableaux à deux dimensions, à une dimension, à trois dimensions ou, en général, à n'importe quelle dimension, et elle affichera toujours les éléments du tableau.
Remarque : la Arrays.deepToString()
méthode ne fonctionne pas avec des tableaux unidimensionnels de primitives (par exemple, int[]
).
Exemples:
|
La str variable contiendra la chaîne :
|
|
La str variable contiendra la chaîne :
|
|
La str variable contiendra la chaîne :
|
4.Arrays.equals()
Nous avons compris comment afficher des tableaux à l'écran, mais qu'en est-il de la comparaison de tableaux ?
Pour comparer des chaînes, nous avons des méthodes equals
et equalsIgnoreCase
, mais quelles méthodes les tableaux ont-ils ?
La bonne nouvelle est que les tableaux ont une equals
méthode. La mauvaise nouvelle est qu'il ne compare pas le contenu des tableaux. La equals
méthode des tableaux fait la même chose que l' ==
opérateur — elle compare les références. Exemples:
Exemples:
|
false (les références ne sont pas égales) |
|
La equals méthode arrays compare simplement les références de deux tableaux. false (les références ne sont pas égales) |
Ce qui peut être fait? Comment comparer les tableaux en fonction de leur contenu ?
Et encore le Arrays
vient à notre rescousse, ou plus précisément, sa Arrays.equals()
méthode. C'est ainsi que nous l'appelons :
Arrays.equals(name1, name2)
La méthode retourne true
si les tableaux sont de longueur égale et si leurs éléments sont égaux. Sinon, ça revient false
.
Exemples:
|
La equals méthode arrays compare simplement les références de deux tableaux. false (les références ne sont pas égales) |
|
true (le contenu est égal) |
|
false (le contenu des tableaux est différent) |
5.Arrays.deepEquals()
Et, comme vous l'avez probablement déjà deviné, la Arrays.equals
méthode ne fonctionnera pas correctement pour les tableaux à deux dimensions : elle traite les tableaux à deux dimensions comme un tableau à une dimension dont les éléments sont des adresses de tableaux à une dimension.
Ainsi, pour comparer correctement les tableaux multidimensionnels ( n = 1, 2, 3,...
), ils ont proposé la Arrays.deepEquals()
méthode. L'appel ressemble à ceci:
Arrays.deepEquals(name1, name2)
La méthode retournetrue
si les tableaux sont de longueur égale et leurs éléments sont égaux. Sinon, il revientfalse
. Si les éléments à l'intérieur du tableau sont également des tableaux, alors la Arrays.deepEquals()
méthode est utilisée pour les comparer, et ainsi de suite.
Exemples:
|
La equals méthode arrays compare simplement les références de deux tableaux. false (les références ne sont pas égales) |
|
La Arrays.equals méthode comparera et en tant que tableaux unidimensionnels qui stockent les références. Ils contiennent différentes références. (le contenu des tableaux n'est pas égal) x1 x2 false |
|
true (le contenu est égal) |