Comment afficher tous les éléments d'un arraylist?

disons que j'ai une classe de voiture avec des attributs make et registration, et je crée un ArrayList pour les stocker. Comment afficher tous les éléments de L'ArrayList?

j'ai ce code maintenant:

public Car getAll()
{
    for(int i = 0; i < cars.size(); i++) //cars name of arraylist
    {
        Car car = cars.get(i);  
        {
            return cars.get (i);
        }
    }
    return null;
}

Ça compile bien, mais quand je l'ai essayer dans mon testeur de classe à l'aide de ce code:

private static void getAll(Car c1)
{
    ArrayList <Car> cars = c1.getAll(); // error incompatible type
    for(Car item : cars)
    {   
        System.out.println(item.getMake()
                + " "
                + item.getReg()
                );
    }
}

j'obtiens une erreur de type incompatible. Mon codage est-il correct? Si non, est-ce que quelqu'un peut me montrer comment ça devrait être?

Merci

15
demandé sur crowne 2009-04-18 02:09:47

9 réponses

essayez-vous de faire quelque chose comme ça?

public List<Car> getAll() {
    return new ArrayList<Car>(cars);
}

puis en l'appelant:

List<Car> cars = c1.getAll();
for (Car item : cars) {   
    System.out.println(item.getMake() + " " + item.getReg());
}
10
répondu Esko Luontola 2009-04-17 23:05:37

vous obtenez une erreur parce que votre fonction getAll dans la classe Car renvoie une seule voiture et vous voulez l'assigner dans un tableau.

ce n'est vraiment pas clair et vous voudrez peut-être poster plus de code. pourquoi passez-vous une seule voiture à la fonction? Quelle est la signification d'appeler getAll sur une voiture?

2
répondu Uri 2009-04-17 22:14:09

ce n'est pas du tout clair ce que vous faites. Votre fonction getAll () devrait retourner une liste, pas une voiture. Sinon, pourquoi l'appeler getAll?

Si vous avez

Car[] arrayOfCars

et que vous voulez une Liste, vous pouvez simplement faire ceci:

List<Car> listOfCars = Arrays.asList(arrayOfCars);

les tableaux sont documentés Ici.

2
répondu nsayer 2009-04-17 22:20:14

Tangentielle: String.format() roches:

public String toString() {
    return String.format("%s %s", getMake(), getReg());
}

private static void printAll() {
    for (Car car: cars)
        System.out.println(car); // invokes Car.toString()
}
2
répondu Carl Manaster 2009-04-17 23:14:28

getAll() la méthode n'obtient pas tout. Il rend la première voiture.

return l'instruction termine la boucle.

2
répondu Darron 2012-10-26 07:37:51

une Autre approche consiste à ajouter un toString() méthode Car classe et de laisser le toString() méthode D'ArrayList faire tout le travail.

@Override
public String toString()
{
    return "Car{" +
            "make=" + make +
            ", registration='" + registration + '\'' +
            '}';
}

vous ne recevez pas une voiture par ligne dans la sortie, mais c'est rapide et facile si vous voulez juste voir ce qui est dans le tableau.

List<Car> cars = c1.getAll();
System.out.println(cars);

Sortie serait quelque chose comme ceci:

[Car{make=FORD, registration='ABC 123'},
Car{make=TOYOTA, registration='ZYZ 999'}]
2
répondu hallidave 2012-10-26 07:59:18

Salut désolé le code pour le second devrait être:

private static void getAll (CarList c1) {

ArrayList <Car> cars = c1.getAll(); // error incompatible type
for(Car item : cars)
{   
      System.out.println(item.getMake()
                       + " "
                       + item.getReg()
                       );
}

}

j'ai une classe appelée Carliste qui contient la liste de tableaux et de sa méthode, de sorte que dans la classe testeur, j'ai ce code à utiliser que les Carlistes de la classe:

CarList c1; c1 = new CarList ();

tout le reste fonctionne, comme ajouter et enlever des voitures et l'affichage d'une voiture inindividuelle, j'ai juste besoin d'un code pour affiche toutes les voitures de la liste.

1
répondu 2009-04-17 22:21:56

Arraylist utilise l'interface Itératrice pour traverser les éléments utilisez ceci

public void display(ArrayList<Integer> v) {
        Iterator vEnum = v.iterator();
        System.out.println("\nElements in vector:");
        while (vEnum.hasNext()) {
            System.out.print(vEnum.next() + " ");
        }
    }
0
répondu BloodLoss 2018-05-11 06:56:13

Vous pouvez utiliser arraylistname.clone()

-1
répondu Moe Sandar 2017-08-19 15:15:42