假设我有一个属性为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()
);
}
}
我收到了不兼容类型的错误。我的编码是否正确?如果没有,有人可以告诉我它应该如何吗?
谢谢
答案 0 :(得分:12)
你想尝试制作这样的东西吗?
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());
}
答案 1 :(得分:2)
您的getAll()
方法无法全部获得。它返回第一辆车。
return
语句终止循环。
答案 2 :(得分:2)
您收到错误,因为Car类中的getAll函数返回单个Car并且您想将其分配给数组。
目前尚不清楚,您可能希望发布更多代码。你为什么要把一辆车送到这个功能?在汽车上调用getAll是什么意思。
答案 3 :(得分:2)
目前还不清楚你在做什么。你的函数getAll()应该返回一个List&lt; Car&gt;而不是Car。否则,为什么称它为getAll?
如果你有
Car[] arrayOfCars
并想要一个List,你可以简单地这样做:
List<Car> listOfCars = Arrays.asList(arrayOfCars);
数组记录Here。
答案 4 :(得分:2)
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()
}
答案 5 :(得分:2)
另一种方法是在toString()
类中添加Car
方法,只需让ArrayList的toString()
方法完成所有工作。
@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'}]
答案 6 :(得分:1)
对不起,第二个的代码应该是:
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及其方法,因此在tester类中,我基本上使用了这个CarList类的代码:
CarList c1; c1 = new CarList();
其他一切都有效,例如添加和移除汽车以及显示个人汽车,我只需要一个代码来显示arraylist中的所有汽车。
答案 7 :(得分:1)
为每个循环设置以获取所有值
for (String member : members){
Log.i("Member name: ", member);
}
答案 8 :(得分:0)
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() + " ");
}
}
答案 9 :(得分:-1)
您可以使用arraylistname.clone()