Java 我应该选择一个大循环还是多个小循环?

Java 我应该选择一个大循环还是多个小循环?,java,function,loops,Java,Function,Loops,在使用Java时,我发现自己必须从长度为n的列表中为响应创建5个不同的列表。我考虑的两种方法是: 1.)将我要填充的列表分解到它们自己的方法中,并通过迭代每个方法中的n项来填充它们 Response getResponse(Integer n) { Response r = new Response(); r.getListOne().addAll(getListOne(n)); r.getListTwo().addAll(getListTwo(n));

在使用Java时,我发现自己必须从长度为n的列表中为响应创建5个不同的列表。我考虑的两种方法是:

1.)将我要填充的列表分解到它们自己的方法中,并通过迭代每个方法中的n项来填充它们

Response getResponse(Integer n) {
    Response r = new Response();        
    r.getListOne().addAll(getListOne(n));
    r.getListTwo().addAll(getListTwo(n));
    return r;
}

List<Integer> getListOne(Integer n) {
    List<Integer> listOne = new ArrayList<>();
    for (Integer num : n) 
        listOne.add(createOne(num));
    return listOne;
}

List<Integer> getListTwo(Integer n) {
    List<Integer> listTwo = new ArrayList<>();
    for (Integer num : n) 
        listTwo.add(createTwo(num));     
    return listTwo;
}
我想知道哪种方法是首选的,循环n次,每次迭代都做大量的工作,或者将其分解为几个循环,每个循环n项,但做的工作更少。我知道如果不需要,我不应该考虑性能,但是除了不同的抽象性和可重用性之外,它们也可以有真正的性能优势吗?
注意:在我的示例中,我尝试用整数实现这两种基本方法。我正在处理的对象有些复杂
List<Integer> list = new ArrayList<>();

for (int i = 0; i < 1e6; i++) {
    list.add(i);
    System.out.println(i);
}
List List=new ArrayList();
对于(int i=0;i<1e6;i++){
列表.添加(i);
系统输出打印LN(i);
}

List List=new ArrayList();
对于(int i=0;i<1e6;i++){
列表.添加(i);
}
对于(int i=0;i<1e6;i++){
系统输出打印LN(i);
}
在这两种情况下,语句
list.add(i)
系统输出打印项次(i)都被执行了6次,这意味着一个大循环相当于多个小循环


在实践中,这很可能不会影响到你,除非以某种方式获取迭代器是昂贵的。

让我们考虑以下两种情况:

List<Integer> list = new ArrayList<>();

for (int i = 0; i < 1e6; i++) {
    list.add(i);
    System.out.println(i);
}
List List=new ArrayList();
对于(int i=0;i<1e6;i++){
列表.添加(i);
系统输出打印LN(i);
}

List List=new ArrayList();
对于(int i=0;i<1e6;i++){
列表.添加(i);
}
对于(int i=0;i<1e6;i++){
系统输出打印LN(i);
}
在这两种情况下,语句
list.add(i)
系统输出打印项次(i)都被执行了6次,这意味着一个大循环相当于多个小循环


在实践中,这很可能不会影响您,除非以某种方式获得迭代器是昂贵的。

DRY=不要重复您自己。一个大循环的代码会更少,因此bug隐藏的机会也会更少。此外,还要注意重复的代码。如果
getListOne
getlistwo
做同样的事情,只需输入
list
作为参数,然后说
list.add
@4castle我完全同意你的观点,干涸和分而治之(分解为方法)。这是两种防止bug和缩短代码的好方法。DRY=不要重复。一个大循环的代码会更少,因此bug隐藏的机会也会更少。此外,还要注意重复的代码。如果
getListOne
getlistwo
做同样的事情,只需输入
list
作为参数,然后说
list.add
@4castle我完全同意你的观点,干涸和分而治之(分解为方法)。这是两种防止bug和缩短代码的好方法。
List<Integer> list = new ArrayList<>();

for (int i = 0; i < 1e6; i++) {
    list.add(i);
}

for (int i = 0; i < 1e6; i++) {
    System.out.println(i);
}