根据列表的大小进行循环处理

时间:2014-02-12 06:46:26

标签: java if-statement arraylist while-loop conditional

我需要根据数组列表的大小调用不同的函数。 即,像

List<String> lsNextPages = new ArrayList<String>(); 
if(lsNextPages.size() == 0){
    lsNextPages = fuction1(parentLink);
}
if(lsNextPages.size() == 0){
    lsNextPages = function2(parentLink);
}
if(lsNextPages.size() == 0){
    lsNextPages = function3(parentLink);
}

为避免在每次函数调用后进行循环检查,我试过

while(lsNextPages.size() == 0){
            lsNextPages = function1(parentLink);
            lsNextPages = function2(parentLink);
            lsNextPages = function3(parentLink);
        }

但这不起作用。这是什么原因,我该怎么做?感谢。

考虑到你的情况,我再添加一个例子:

public static void main(String []args) {
        List<String> lsNextPages = new ArrayList<String>(); 
        while(lsNextPages.size() == 0){
            lsNextPages = function1();
            lsNextPages = function2();
            lsNextPages = function3();
        }
        System.out.println(lsNextPages);
}

    static public List<String> function1(){
        List<String> list = new ArrayList<String>();;
        return list;
    }
    static public List<String> function2(){
        List<String> list = Arrays.asList("1","2");
        return list;
    }
    static public List<String> function3(){
        List<String> list = Arrays.asList("1","2","3");
        return list;
    }

我需要的是如果第一个函数给出非空列表,请不要调用以下函数。即,function2给出一个非空列表。所以不要调用function3。我需要像[1,2]这样的输出。 但这里的输出是[1,2,3]。 如果我使用while循环更改if循环,则输出相同。

2 个答案:

答案 0 :(得分:1)

你为什么选择,这将一遍又一遍地执行功能1 - 3。为什么不

if(lsNextPages.size() == 0){
            lsNextPages = function1(parentLink);
            lsNextPages = function2(parentLink);
            lsNextPages = function3(parentLink);
        }

答案 1 :(得分:1)

您已使用while循环替换了3 if(lsNextPages.size() == 0){条件。如果列表的大小保持0,则循环可能执行多次,也可能无限次,因此无法保证行为。
我想你必须尝试这个:

if(lsNextPages.size() == 0){
  lsNextPages = function1(parentLink);
  lsNextPages = function2(parentLink);
  lsNextPages = function3(parentLink);
}