重构一个依赖于循环的方法

Refactoring a method that relies on a loop

下面我的 java 代码会根据 list 中有多少狗 超过 来增加 int 值一定年龄:

for (int i = 0; i < dogList.size(); i++) {
    if (dogList.get(i).getAge() > 5) {
        dogsOverFive++
        continue;
    }           
}

将我的代码重构为它自己的方法的最佳做法是什么?
我应该将 ilist 作为参数传递吗?

只需这样做:

public static int olderThan(List<Dog> dogList, int age) {
    int count = 0;
    for (int i = 0; i < dogList.size(); i++) {
        if (dogList.get(i).getAge() > age) {
            count++;
            continue;
        }           
    }
    return count;
} 

顺便说一句 continue; 声明是不必要的。

您应该传递一个 list 和一个 age 作为参数,并且 return 一定数量的此类狗作为 int 值。

我建议考虑我的 Java 8 解决方案。

public int olderThan(List<Dog> list, int age) {
    return (int)list.stream().filter(dog -> dog.getAge() > age).count();
}

我的同事@Nikolas Charalambidis 和@Dmitry Bychenko 展示了其他标准方法。