Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重构依赖循环的方法_Java_List_For Loop_Methods_Refactoring - Fatal编程技术网

Java 重构依赖循环的方法

Java 重构依赖循环的方法,java,list,for-loop,methods,refactoring,Java,List,For Loop,Methods,Refactoring,下面的java代码根据列表中超过某一年龄的狗的数量增加int值: for(int i=0;i5){ 多格索夫++ 继续; } } 将代码重构为自己的方法的最佳实践是什么? 我是否应该将I和列表作为参数传递?只需执行以下操作: public static int olderThan(List<Dog> dogList, int age) { int count = 0; for (int i = 0; i < dogList.size();

下面的java代码根据
列表
中超过某一年龄的狗的数量增加
int
值:

for(int i=0;i5){
多格索夫++
继续;
}           
}
将代码重构为自己的方法的最佳实践是什么?
我是否应该将
I
列表作为参数传递?

只需执行以下操作:

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;
} 
publicstaticintolderthan(List dogList,int age){
整数计数=0;
对于(int i=0;iage){
计数++;
继续;
}           
}
返回计数;
} 

顺便说一下,
继续语句是不必要的。

您应该传递一个
列表
和一个
年龄
作为参数,并返回一个
int

我建议考虑我的Java8解决方案

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

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

不,您应该将
列表作为参数传递,比如
公共无效doSomething(ArrayList…){}
是,但是它不能得到int“i”它需要迭代吗?我要说的是,通过将
列表
作为参数传递给
静态
方法,并将所需的狗龄阈值传递给
静态
方法进行重构。这样,您可以在任何年龄使用它。@3kings返回“狗数”可能是个好主意:)
public int doSomething….
public int olderThan(List<Dog> list, int age) {
    return (int)list.stream().filter(dog -> dog.getAge() > age).count();
}