Как отобразить все элементы в 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()