好日子搜索在ArrayList中的特定對象,通過屬性
想象我有以下代碼: (這些顯然不是所有的屬性)
class Owner {
private String name;
}
class Car {
private Owner owner;
private String brandName;
public boolean isClean() { // not included in the contructor
return false;
}
class FuelCar extends Car {
private String fuelType;
public boolean isClean() {
if (fuelType.equals("Diesel")){
return false;
} else {
return true;
}
}
class ElectricCar extends Car {
private int batteryLevel;
public boolean isClean() {
return true;
}
}
的對象添加到一個ArrayList:
ArrayList<Car> cars = new ArrayList<>();
實例:
cars.add(new Auto("Audi", new Owner("Peter")));
cars.add(new Auto("Fiat", new Owner("Rob")));
cars.add(new Auto(Mercedes, null));
cars.add(new ElectricCar(10, "Opel ", new Owner("Unknown")));
cars.add(new ElectricCar(100,"Google", new Owner("Google")));
cars.add(new FuelCar("diesel", "Seat", new Owner("Tom")));
cars.add(new FuelCar("gasonline", "Smart", new Owner("Marcel")));
現在的問題是:
我怎樣才能讓一個方法,所以我只列出其中具有值isClean「真」的所有汽車;
如何使具有以下簽名的方法: 公共靜態無效printCarsSpecific(ArrayList的汽車,字符串fuelType) 因此,舉例來說,如果我把在: printCarsSpecific(「汽油」); 打印ArrayList時只顯示那些汽車。
PS:這不是功課。只爲教育 我自己輸入了上面的代碼,並沒有複製和粘貼,因爲它會變大。
我嘗試以下方法:
public static void printBedrijfsautosMetType(ArrayList<Auto> autos, String brandstof) {
Iterator<Auto> iter = autos.iterator();
while (iter.hasNext()) {
Auto auto = iter.next();
if (auto instanceof BrandstofAuto) {
String brandstof1 = ((BrandstofAuto) auto).getBrandstof();
if (!brandstof1.equals(brandstof) || brandstof1 == null) {
iter.remove();
}
}
for (int i = 0; i < autos.size(); i++) {
System.out.println(autos.get(i));
}
}
}
和
public static void printSchoneAutos(ArrayList<Auto> autos) {
Iterator<Auto> iter = autos.iterator();
while (iter.hasNext()) {
Auto auto = iter.next();
if (auto instanceof BrandstofAuto) {
boolean isschoon = ((BrandstofAuto) auto).isSchoon();
boolean isschoon3 = auto.isSchoon();
if (isschoon3 == false || isschoon == false) {
iter.remove();
}
}
for (int i = 0; i < autos.size(); i++) {
System.out.println(autos.get(i));
}
}
}
我想我沒有刪除這些項目,因爲我已經通過例子在這裏看到。
你嘗試過什麼嗎? – proskor
@ R.Schouten您至少應該首先縮進您的代碼。此外,你的語法是錯誤的,爲什麼像'class'和'private'這樣的詞彙是大寫的?在我看來,你甚至不知道基本知識。也許你應該發佈你到目前爲止嘗試過的東西。 – user3437460
這確實看起來像一個家庭作業... –