Как отобразить все элементы в arraylist?

Скажем, у меня есть класс автомобиля с атрибутами make и registration, и я создаю ArrayList для их хранения. Как отобразить все элементы в ArrayList?

У меня есть этот код прямо сейчас:

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

Он компилируется отлично, но когда я попробую его в своем классе тестера, используя этот код:

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

Я получаю ошибку несовместимого типа. Правильно ли написано мое кодирование? Если не может кто-нибудь, пожалуйста, покажите мне, как это должно быть?

Спасибо

Ответы

Ответ 1

Вы пытаетесь сделать что-то вроде этого?

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

И затем назовем его:

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

Ответ 2

Ваш метод getAll() не получает все. Он возвращает первый автомобиль.

Оператор return завершает цикл.

Ответ 3

Вы получаете сообщение об ошибке, потому что ваша функция getAll в классе Car возвращает один автомобиль и вы хотите назначить его в массив.

Это действительно не понятно, и вы можете отправить больше кода. почему вы передаете один автомобиль в функцию? В чем смысл вызова getAll на автомобиле.

Ответ 4

Это не совсем понятно, что вы делаете. Ваша функция getAll() должна вернуть список <Car> , а не автомобиль. В противном случае, зачем называть его getAll?

Если у вас

Car[] arrayOfCars

и хотите Список, вы можете просто сделать это:

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

Массивы документированы Здесь.

Ответ 5

Tangential: 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()
}

Ответ 6

Другой подход заключается в том, чтобы добавить метод toString() к вашему классу Car и просто позволить методу toString() ArrayList выполнить всю работу.

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

Вы не получаете по одному автомобилю в строке на выходе, но это быстро и просто, если вы просто хотите увидеть, что находится в массиве.

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

Результат будет примерно таким:

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

Ответ 7

Привет, код для второго должен быть:

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

}

У меня есть класс CarList, который содержит arraylist и его метод, поэтому в классе тестера у меня есть в основном этот код для использования этого класса CarList:

CarList c1; c1 = новый CarList();

все остальное работает, например, добавление и удаление автомобилей и отображение индивидуального автомобиля, мне просто нужен код для отображения всех автомобилей в arraylist.

Ответ 8

Вы можете использовать arraylistname.clone()