从ArrayList返回计数

时间:2015-12-02 05:19:00

标签: java arrays

我有def shift_sixes(num): for i, val in enumerate(num): if val == 6: # shift remaining items down for j in range(i,len(num)-1): num[j] = num[j+1] # add 6 at the end num[-1] = 6 return num print(shift_sixes([1,9,4,6,2,7,8,6,2,2,6])) print(shift_sixes([1,2,3])) print(shift_sixes([6])) print(shift_sixes([3])) 存储汽车库存。我希望用户输入开始年份和结束年份,并在指定的年份范围内返回库存中的多辆汽车。我必须使用foreach循环并获得所有年份才能显示。我怎么算他们?以下是我到目前为止的内容

ArrayList

3 个答案:

答案 0 :(得分:4)

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

totalYear++;

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

答案 1 :(得分:4)

你非常接近。它会增加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 :(得分:0)

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

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

这样做是通过filter方法从库存中获取一组符合您条件的兰博基尼对象,然后返回匹配的项目数。