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

Скажем, у меня есть класс автомобиля с атрибутами 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()
                );
    }
}

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

Благодарю вас

9 ответов

Вы пытаетесь сделать что-то подобное?

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

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

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

Другой подход заключается в добавлении 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'}]

Тангенциальный: String.format() пород:

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

Установите для каждого цикла, чтобы получить все значения

for (String member : members){
    Log.i("Member name: ", member);
}

Не совсем понятно, что ты задумал. Ваша функция getAll() должна возвращать List, а не Car. Иначе зачем называть это getAll?

Если у вас есть

Car[] arrayOfCars

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

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

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

Ваш getAll() метод не все получает. Возвращает первую машину.

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

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

приватная статическая пустота 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 использует интерфейс Iterator для обхода элементов.

public void display(ArrayList<Integer> v) {
        Iterator vEnum = v.iterator();
        System.out.println("\nElements in vector:");
        while (vEnum.hasNext()) {
            System.out.print(vEnum.next() + " ");
        }
    }

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

Другие вопросы по тегам