重构依赖循环的方法

时间:2016-03-24 14:43:01

标签: java list for-loop methods refactoring

我的下面的java代码会增加int值,具体取决于 list中有多少只狗超过某个年龄

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

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

2 个答案:

答案 0 :(得分:13)

只需这样做:

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;语句是不必要的。

答案 1 :(得分:2)

您应该传递listage作为参数,并返回一定数量的此类狗作为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已经展示了其他标准方式。