我需要根据数组列表的大小调用不同的函数。 即,像
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
循环,则输出相同。
答案 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);
}