D'après Sun Java Tutorial , j'aurais pensé que ce code convertirait un ensemble en tableau.
import Java.util.*;
public class Blagh {
public static void main(String[] args) {
Set<String> set = new HashSet<String>();
set.add("a");
set.add("b");
set.add("c");
String[] array = set.toArray(new String[0]);
System.out.println(set);
System.out.println(array);
}
}
Cependant, cela donne
[a, c, b]
[Ljava.lang.String;@9b49e6
Qu'est-ce que j'ai mal compris?
Le code fonctionne bien.
Remplacer:
System.out.println(array);
Avec:
System.out.println(Arrays.toString(array));
Sortie:
[b, c, a] [b, c, a]
La représentation String
d'un tableau affiche une "représentation textuelle" du tableau, obtenue par Object.toString
- qui est le nom de la classe et le code de hachage du tableau sous forme de chaîne hexadécimale.
par souci d'exhaustivité, vérifiez également Java.util.Arrays.toString et Java.util.Arrays.deepToString .
Ce dernier est particulièrement utile lorsqu'il s'agit de tableaux imbriqués (Comme Object [] []).
C'est bon.
Vous ne voyez pas le contenu du tableau avec System.out.println (tableau) car println Appelle object.toString () pour obtenir les octets d'un objet pour la sortie.
Etant donné que HashSet substitue l'implémentation toString () par défaut, vous pouvez voir le contenu de l'ensemble avec System.out.println (set);
Comme les tableaux ne surchargent pas toString () par défaut (qui donne le nom de la classe et une sorte de code de hachage d'identité), vous obtenez le fuzzy [Ljava.lang.String; @ 9b49e6
J'espère que cela pourra aider
Comme mentionné ci-dessus, vous pouvez simplement remplacer:
System.out.println(array);
avec...
System.out.println(Arrays.toString(array));
Je ne pense pas que vous ayez mal compris quoi que ce soit; le code devrait fonctionner. Le tableau, cependant, n’est pas assez intelligent pour imprimer son contenu avec la méthode toString. Vous devez donc imprimer le contenu avec
for(String s : array) println(s);
ou quelque chose comme ça.
Vous avez le bon résultat. Malheureusement, la méthode toString () du tableau est toujours la Object.toString () d'origine. Le résultat est donc un peu inutilisable par défaut, mais cela s'applique à tous les tableaux.