web-dev-qa-db-fra.com

Print ArrayList

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

Comment puis-je imprimer les valeurs de ce ArrayList, ce qui signifie que j'imprime le contenu du tableau, dans ce cas numéros.

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

for(int i = 0; i < houseAddress.size(); i++) {   
    System.out.print(houseAddress.get(i));
}  
63
dancooper93
Arrays.toString(list.toArray())
83
odoepner

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

System.out.println(Arrays.toString(houseAddress));
16
Ashwinee K Jha

D'après ce que j'ai compris, vous essayez d'imprimer une liste de tableaux avec une matrice 

System.out.println(Arrays.deepToString(list.toArray()));
8
Ben Dworkin

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

solution de votre classe Address annule la méthode toString() comme ceci 

public class Address {

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

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

maintenant quand tu appelles 

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

System.out.print( houseAddress.get(i) ) la toString() de l'objet Address sera appelée 

8
confucius

Voulez-vous dire que ArrayList stocke les adresses de tableaux parce que c'est ce qui revient de l'appel toString ou parce que c'est ce que vous stockez?

Si vous avez une 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
JoshBramlett

Vous pouvez simplement le donner comme:

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

Votre sortie ressemblera à [address1, address2, address3]

En effet, la classe ArrayList ou sa super-classe aurait une fonction toString () remplacée.

J'espère que cela t'aides.

4
Suraj

assium que vous avez une liste de chiffres 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);
4
Ragulan28
public void printList(ArrayList<Address> list){
    for(Address elem : list){
        System.out.println(elem+"  ");
    }
}
4
Love Bisaria

Mettez houseAddress.get (i) entre les crochets et appelez la fonction .toString (): i.e Voir ci-dessous.

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

Je ne suis pas sûr d'avoir bien compris la notion d'adresses (je présume que je suis houseAddress ici), mais si vous cherchez un moyen d'imprimer le ArrayList, vous avez ceci:

System.out.println(houseAddress.toString().replaceAll("\\[\\]", ""));
2
Manu

Cela m'a aidé:

System.out.println(Arrays.toString(codeLangArray.toArray()));
1
Abduhafiz

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

Avec classe annonymous :

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 la méthode :

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

Ce mode d'impression convient à toutes les implémentations de l'interface Iterable.
Ils vous permettent tous de définir le mode d'impression des éléments, tandis que toString () applique la liste d'impression dans un format.

1
Michał Szewczyk

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 pour le type de données houseAddress et éviter les conversions inutiles. 

0
Ishan Srivastava

si vous faites de la chaîne publique @Override String toString () des commentaires, vous obtiendrez les mêmes résultats. 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
user7194131
 public static void main(String[] args) {
        List<Moyen> list = new ArrayList<Moyen>();
        Moyen m1 = new Moyen();
        m1.setCodification("c1");
        m1.setCapacityManager("Avinash");
        Moyen m2 = new Moyen();
        m2.setCodification("c1");
        m2.setCapacityManager("Avinash");
        Moyen m3 = new Moyen();
        m3.setCodification("c1");
        m3.setCapacityManager("Avinash");

        list.add(m1);
        list.add(m2);
        list.add(m3);
        System.out.println(Arrays.toString(list.toArray()));
    }
0
Avinash Khadsan

vous pouvez utiliser le format d'impression si vous souhaitez simplement imprimer l'élément sur la console.

for(int i = 0; i < houseAddress.size(); i++) {   
    System.out.printf("%s", houseAddress.get(i));
}  
0
Kenneth Ryan Dy

Assurez-vous d'avoir une classe d'adresse getter in House puis utilisez:

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

Vous pouvez utiliser un itérateur. C'est la chose la plus simple et la moins controversée à faire ici. Dites que 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
Ishan Srivastava