99 votes

Imprimer ArrayList

J'ai une ArrayList qui contient des objets Adresse.

Comment puis-je imprimer les valeurs de cette liste de tableaux, c'est-à-dire que j'imprime le contenu du tableau, dans ce cas des chiffres.

Je ne peux obtenir l'impression de l'adresse mémoire réelle du tableau qu'avec ce code :

for(int i = 0; i < houseAddress.size(); i++) {   
    System.out.print(houseAddress.get(i));
}

0 votes

Voulez-vous l'adresse en mémoire ?

0 votes

Désolé, je ne comprends pas ce que vous voulez dire. l'arraylist stocke l'adresse pointant vers le tableau, et je veux imprimer le contenu du tableau, mais je ne sais pas comment m'y prendre.

0 votes

J'ai essayé de reformuler la question pour la rendre plus claire.

133voto

odoepner Points 31

List.toString() est suffisant.

L'interface List ne définit pas de contrat pour toString(), mais la classe de base AbstractCollection fournit une implémentation utile dont ArrayList hérite.

1 votes

La même sortie est imprimée par System.out.println(list) ;

7 votes

List est houseAddress ici : Arrays.toString(houseAddress.toArray())

3 votes

AbstractCollection surcharge déjà toString() pour imprimer le contenu de ses éléments. Ainsi, il suffit de list.toString() imprime le toString() de tous ses éléments. Ceci est vrai pour toutes les collections.

27voto

Ashwinee K Jha Points 4205

Ajouter toString() à votre address classe alors faire

System.out.println(Arrays.toString(houseAddress));

46 votes

Cela ne fonctionnerait que pour un tableau, pas pour une liste de tableaux. Vous ne pouvez pas fournir houseAddress comme argument pour Arrays.toString() car il n'est pas de type Array.

0 votes

À mon avis, le looping est la seule issue possible ici, si quelqu'un connaît une meilleure option, merci de la partager.

24voto

Ben Dworkin Points 340

D'après ce que j'ai compris, vous essayez d'imprimer une liste de tableaux (ArrayList of arrays) et une façon de l'afficher serait la suivante

System.out.println(Arrays.deepToString(list.toArray()));

9voto

confucius Points 6071

Puisque vous n'avez pas fourni une implémentation personnalisée pour toString() il appelle la méthode par défaut qui va imprimer l'adresse en mémoire pour cet objet

solution dans votre classe d'adresse, remplacez le toString() comme ceci

public class Address {

int addressNo ; 
....
....
...

protected String toString(){
    return Integer.toString(addressNo);
}

maintenant quand vous appelez

houseAddress.get(i)  in the `System.out.print()` method like this

System.out.print( houseAddress.get(i) ) el toString() de la Address sera appelé

8voto

Suraj Points 29

Vous pouvez simplement le donner comme :

System.out.println("Address:" +houseAddress);

Votre résultat ressemblera à [address1, address2, address3]

Cela est dû au fait que la classe ArrayList ou sa superclasse aurait une fonction toString() surchargée.

J'espère que cela vous aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X