Imprimer La Liste De Tableaux


J'ai une ArrayList qui contient des objets d'adresse.

Comment puis-je imprimer les valeurs de cette ArrayList, ce qui signifie que j'imprime le contenu du Tableau, dans ce cas les nombres.

Je ne peux l'obtenir que pour imprimer l'adresse mémoire réelle du tableau avec ce code:

for(int i = 0; i < houseAddress.size(); i++) {   
    System.out.print(houseAddress.get(i));
}  
Author: antony.trupe, 2012-02-13

16 answers

Arrays.toString(list.toArray())
 73
Author: odoepner, 2016-02-24 16:06:41

Ajoutez la méthode toString() à votre classe address puis faites

System.out.println(Arrays.toString(houseAddress));
 15
Author: Ashwinee K Jha, 2012-02-14 08:28:32

Puisque vous n'avez pas fourni d'implémentation personnalisée pour la méthode toString(), elle appelle la valeur par défaut sur laquelle va imprimer l'adresse en mémoire pour cet objet

Solution dans votre classe d'adresse, remplacez la méthode 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) ) le toString() de la Address objet sera appelé

 8
Author: confucius, 2013-12-08 15:59:08

D'après ce que je comprends, vous essayez d'imprimer une ArrayList de tableaux et la seule façon d'afficher ce serait

System.out.println(Arrays.deepToString(list.toArray()));
 8
Author: Ben Dworkin, 2017-03-08 21:06:53

Dites-vous que ArrayList stocke des adresses de tableaux parce que c'est ce qui revient de l'appel toString, ou parce que c'est en fait ce que vous stockez?

Si vous avez un ArrayList de tableaux (par exemple,

int[] arr = {1, 2, 3};
houseAddress.add(arr);

Ensuite, pour imprimer les valeurs du tableau, vous devez appeler Arrays.deepToString:

for (int i = 0; i < houseAddress.size(); i++) {
     System.out.println(Arrays.deepToString(houseAddress.get(i)));
}
 5
Author: JoshBramlett, 2012-02-14 08:39:17
public void printList(ArrayList<Address> list){
    for(Address elem : list){
        System.out.println(elem+"  ");
    }
}
 4
Author: Love Bisaria, 2015-02-28 12:18:05

Vous pouvez simplement le donner comme:

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

Votre sortie ressemblera [address1, address2, address3]

C'est parce que la classe ArrayList ou sa superclasse aurait une fonction toString() remplacée.

J'espère que cela aide.

 4
Author: Suraj, 2015-11-18 09:06:29

Mettre houseAddress.obtenez (i) entre parenthèses et appelez .Fonction toString (): c'est-à-dire veuillez voir ci-dessous

for(int i = 0; i < houseAddress.size(); i++) {System.out.print((houseAddress.get(i)).toString());
}  
 3
Author: 21stking, 2013-06-18 10:05:30

Je ne sais pas si j'ai compris la notion d'adresses (je suppose que houseAddress ici), mais si vous cherchez un moyen d'imprimer la liste de tableaux, voici:

System.out.println(houseAddress.toString().replaceAll("\\[\\]", ""));
 1
Author: Manu, 2016-01-12 10:06:44

Cela m'a aidé:

System.out.println(Arrays.toString(codeLangArray.toArray()));
 1
Author: Abduhafiz, 2016-03-29 07:57:10

Depuis Java 8, vous pouvez utiliser forEach() méthode de Itérable interface.
C'est une méthode par défaut. Comme argument, il prend un objet de la classe qui implémente l'interface fonctionnelle Consommateur. Vous pouvez implémenter Consumer localement de trois manières:

Avec classe annononyme :

houseAddress.forEach(new Consumer<String>() {
    @Override
    public void accept(String s) {
        System.out.println(s);
    }
}); 

Expression lambda :

houseAddress.forEach(s -> System.out.println(s));

Ou en utilisant référence de méthode :

houseAddress.forEach(System.out::print);

Cette façon d'imprimer fonctionne pour tous implémentations de l'interface Itérable .
Tous, vous donne la façon de définir comment les éléments seront imprimés, tandis que toString() applique la liste d'impression dans un format.

 1
Author: Michał Szewczyk, 2016-11-05 18:58:52

Assium que vous avez une liste de nombres comme ça

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);

Si vous imprimez la liste

//method 1
// Conventional way of printing arraylist
for (int number : numbers) {
    System.out.print(number);
}

//method 2
// Lambda Expression to print arraylist
numbers.forEach((Integer value) -> System.out.print(value));

//method 3
// Lambda Expression to print arraylist
numbers.forEach(value -> System.out.print(value));


//method 4
// Lambda Expression (method reference) to print arraylist
numbers.forEach(System.out::print);
 1
Author: Ragulan28, 2018-06-06 03:46:40

Vous pouvez utiliser un itérateur. C'est la chose la plus simple et la moins controversée à faire ici. Dire houseAddress a des valeurs de type de données String

    Iterator<String> iterator = houseAddress.iterator();
    while (iterator.hasNext()) {
    out.println(iterator.next());
    }

Remarque: Vous pouvez même utiliser une boucle for améliorée pour cela comme mentionné par moi dans une autre réponse

 0
Author: Ishan Srivastava, 2017-05-29 10:12:17

Vous pouvez même utiliser une boucle for améliorée ou un itérateur comme

for (String name : houseAddress) {
out.println(name);
}

Vous pouvez le changer en n'importe quel type de données houseAddress et cela évite les conversions unnecesarry

 0
Author: Ishan Srivastava, 2017-05-29 11:00:03

Si vous rendez la chaîne publique @ Override toString () en tant que commentaires, vous aurez les mêmes résultats que vous. Mais si vous implémentez votre méthode toString (), cela fonctionnera.

Classe publique PrintingComplexArrayList {

public static void main(String[] args) {
    List houseAddress = new ArrayList();
    insertAddress(houseAddress);
    printMe1(houseAddress);
    printMe2(houseAddress);
}

private static void insertAddress(List address)
{
    address.add(new Address(1));
    address.add(new Address(2));
    address.add(new Address(3));
    address.add(new Address(4));
}
private static void printMe1(List address)
{
    for (int i=0; i<address.size(); i++)
        System.out.println(address.get(i));
}

private static void printMe2(List address)
{
    System.out.println(address);
}

}

Adresse de classe{ privé int addr; adresse publique (int i) { addr = i; }

@Override public String toString()
{
    Integer iAddr = new Integer (addr);
    return iAddr.toString();
}

}

 0
Author: user7194131, 2018-08-28 02:59:50

Assurez-vous d'avoir un getter dans la classe d'adresse interne, puis utilisez:

for(int i = 0; i < houseAddress.size(); i++) {   
    System.out.print(houseAddress.get(i)**.getAddress()**);
}
 0
Author: Gauru, 2018-09-07 12:00:41