【问题标题】:Return count from ArrayList从 ArrayList 返回计数
【发布时间】:2015-12-02 05:18:59
【问题描述】:

我有一个ArrayList,用于存储汽车库存。我希望用户输入开始年份和结束年份,并返回指定年份范围内的库存汽车数量。我必须使用 foreach 循环并显示所有年份。我怎么数他们?以下是我目前所拥有的

public int howManyBetweenTheseYears(int startYear, int endYear)
{
   int totalYear = 0;
   for(Lamborghini year : inventory)
   { 
      if((year.getModelYear() >= startYear)
            && (year.getModelYear() <= endYear)) {
        totalYear = year.getModelYear();
        System.out.println(totalYear);   
      }
 }    

【问题讨论】:

    标签: java arrays


    【解决方案1】:

    你很亲密。增加 totalYearreturn 它。比如,

    public int howManyBetweenTheseYears(int startYear, int endYear) {
        int totalYear = 0;
        for (Lamborghini year : inventory) {
            int modelYear = year.getModelYear();
            if ((modelYear >= startYear) && (modelYear <= endYear)) {
                totalYear++;
                System.out.printf("modelYear: %d, total: %d%n", modelYear, 
                        totalYear);
            }
        }
        return totalYear;
    }
    

    【讨论】:

      【解决方案2】:

      由于您要计算,您应该为每辆具有所需modelYear 的汽车将totalYear 增加1。即,将totalYear = year.getModelYear(); 更改为

      totalYear++;
      

      顺便说一句,如果您使用的是 Java 8,则可能需要使用 lambda。

      【讨论】:

        【解决方案3】:

        如果您能够使用 Java 8 构造,则可以使用的另一种方法是流和谓词。您可以获取 ArrayList 的流视图,对其应用谓词,然后获取计数:

        public int howManyBetweenTheseYears(int startYear, int endYear) {
            return inventory.stream()
                .filter((Lamborghini year) -> (modelYear >= startYear) && (modelYear <= endYear))
                .count();
        }
        

        它的作用是通过filter 方法从库存中获取一组与您的条件匹配的兰博基尼对象,然后返回匹配项目的数量。

        【讨论】:

          猜你喜欢
          • 2020-04-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-02
          • 2014-04-23
          • 2014-04-03
          • 2014-09-02
          • 1970-01-01
          相关资源
          最近更新 更多