Как отобразить все элементы в массиве?
Скажем, у меня есть класс автомобиля с атрибутами 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[] 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() + " ");
}
}