使用另一个构造函数中的对象指定参数重新调整arraylist

时间:2014-06-12 07:41:47

标签: java arraylist get

我有一个类汽车经销商,并且有一个列表列出了所有汽车的年份,型号,马力等等。

    inventory.add(new Lamborghini(1971, "urraco", 371.3, false));
    inventory.add(new Lamborghini(1971, "urraco", 371.3, false));
    inventory.add(new Lamborghini(1973, "countache", 373.3, false));
    inventory.add(new Lamborghini(1974, "silhouette", 374.3, false));
    inventory.add(new Lamborghini(1975, "jalpa", 375.3, true));

等等。我被要求完成这个get方法

    public ArrayList<Lamborghini> getCarsFromThisYear(int year)

如果没有具有特定模型年份的lamborghini对象并返回具有特定模型年份的所有lamborghini对象的arraylist,则返回空arraylist的条件。

我开始做这样的事情......

    public ArrayList<Lamborghini> getCarsFromThisYear(int year){
        for(Lamborghini cars : inventory)
        { 
            if(cars.getModelYear() == year){

            }           
        }
    }

但不知道该如何陈述if,返回什么,或者即使我走在正确的道路上。

有任何建议或指导吗?

3 个答案:

答案 0 :(得分:0)

我建议:

public ArrayList<Lamborghini> getCarsFromThisYear(int year) {
   ArrayList<Lamborghini> thisYearLamb = new ArrayList<Lamborghini>();
   for(Lamborghini cars : inventory)
   { 
      if(cars.getModelYear() == year) {
         thisYearLamb.add(cars);
      }
   }          

   return thisYearLamb;
}

答案 1 :(得分:0)

您需要将结果放入新列表中。因此,在顶部创建一个新列表,如ArrayList<Lamborghini> result = new ArrayList<Lamborghini>();。您想将匹配项添加到列表中,请查看JavaDocs以了解如何执行此操作。

此外,您还有一个小错误:您应该cars.getModelYear().equals(year)

答案 2 :(得分:0)

您应该返回一个对象的ArrayList。因此,创建一个ArrayList并将符合条件的每辆汽车添加到列表中。最后返回该列表。

public ArrayList<Lamborghini> getCarsFromThisYear(int year){
        ArrayList<Lamborghini> list = new ArrayList<Lamborghini>();
        for(Lamborghini car : inventory)
        { 
            if(car.getModelYear() == year){
                list.add(car);
            }           
        }
        return list;
    }  

如果您使用的是Java 8:

public List<Lamborghini> getCarsFromThisYear(int year){
    return inventory.stream().filter(car -> car.getModelYear() == year).collect(Collectors.toList());
}