web-dev-qa-db-fra.com

Comment afficher tous les éléments dans une liste?

Supposons que j'ai une classe de voiture avec les attributs make et registration et que je crée une ArrayList pour les stocker. Comment afficher tous les éléments de la liste de tableaux?

J'ai ce code en ce moment:

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;
}

Il compile bien mais quand je l’essaye dans ma classe de testeur en utilisant 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()
                );
    }
}

Je reçois une erreur de type incompatible. Est-ce que mon codage est correct? Si non, quelqu'un peut-il me montrer comment cela devrait être?

Je vous remercie

15
Newtojava

Est-ce que vous essayez de faire quelque chose comme ça?

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

Et puis l'appelant:

List<Car> cars = c1.getAll();
for (Car item : cars) {   
    System.out.println(item.getMake() + " " + item.getReg());
}
11
Esko Luontola

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

L'instruction return termine la boucle.

2
Darron

Vous obtenez une erreur car votre fonction getAll de la classe Car renvoie une seule voiture et vous souhaitez l'affecter à un tableau.

Ce n'est vraiment pas clair et vous voudrez peut-être publier plus de code. pourquoi passez-vous une seule voiture à la fonction? Quel est le sens de l'appel de getAll on a Car.

2
Uri

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

Si tu as

Car[] arrayOfCars

et voulez une liste, vous pouvez simplement faire ceci:

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

Les tableaux sont documentés Ici .

2
nsayer

Tangentielle: String.format () rocks:

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
Carl Manaster

Une autre approche consiste à ajouter une méthode toString() à votre classe Car et à laisser simplement la méthode toString() de ArrayList effectuer tout le travail.

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

Vous n'obtenez pas une voiture par ligne dans la sortie, mais c'est simple et rapide si vous voulez juste voir ce qu'il y a dans le tableau.

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

La sortie serait quelque chose comme ceci:

[Car{make=FORD, registration='ABC 123'},
Car{make=TOYOTA, registration='ZYZ 999'}]
2
hallidave

Bonjour désolé, le code pour le second devrait être:

getAll statique statique privé (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 CarList qui contient l'arraylist et sa méthode, donc dans la classe testeur, j'ai essentiellement ce code pour utiliser cette classe CarList:

CarList c1; C1 = new CarList ();

tout le reste fonctionne, comme l'ajout et la suppression de voitures et l'affichage d'une voiture individuelle, j'ai juste besoin d'un code pour afficher toutes les voitures de la liste.

1
Newtojava

Arraylist utilise l’interface Iterator pour parcourir 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
BloodLoss