19

假设我有一个带有属性的汽车类makeregistration并且我创建了一个 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()
                );
    }
}

我收到不兼容类型的错误。我的编码正确吗?如果没有,有人可以告诉我应该怎么做吗?

谢谢你

4

10 回答 10

13

你想制作这样的东西吗?

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());
}
于 2009-04-17T22:20:07.680 回答
2

你的getAll()方法没有得到全部。它返回第一辆车。

return语句终止循环。

于 2009-04-17T22:13:06.467 回答
2

您收到错误是因为 Car 类中的 getAll 函数返回一个 Car 并且您希望将其分配到数组中。

这真的不清楚,您可能想发布更多代码。你为什么将一个 Car 传递给函数?在汽车上调用 getAll 是什么意思。

于 2009-04-17T22:14:09.880 回答
2

另一种方法是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'}]
于 2009-04-17T23:34:33.213 回答
2

根本不清楚你在做什么。您的函数 getAll() 应该返回 List<Car>,而不是 Car。否则,为什么叫它getAll?

如果你有

Car[] arrayOfCars

并想要一个列表,您可以简单地这样做:

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

数组在此处记录。

于 2009-04-17T22:20:14.297 回答
2

切线: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()
}
于 2009-04-17T23:14:28.423 回答
2

为每个循环设置以获取所有值

for (String member : members){
    Log.i("Member name: ", member);
}
于 2020-09-06T06:13:04.410 回答
1

嗨,抱歉,第二个代码应该是:

私人静态无效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 类:

汽车清单 c1; c1 = new CarList();

其他一切正常,例如添加和删除汽车以及显示单独的汽车,我只需要一个代码来显示数组列表中的所有汽车。

于 2009-04-17T22:21:56.337 回答
0

Arraylist 使用 Iterator 接口遍历元素 使用 this

public void display(ArrayList<Integer> v) {
        Iterator vEnum = v.iterator();
        System.out.println("\nElements in vector:");
        while (vEnum.hasNext()) {
            System.out.print(vEnum.next() + " ");
        }
    }
于 2018-05-11T06:56:13.117 回答
-1

您可以使用arraylistname.clone()

于 2017-08-19T15:05:01.817 回答