2016-01-13 78 views
0

我需要从另一个列表中所以这里的列表之外的列表是我做了什么:获取一个循环

ArrayList<String> userList = user.getListSalarieByManager(login); 
ArrayList<DHDemande> demandesList; 
for (int i = 0; i < userList.size(); i++) { 
    demandesList = d.getDemandesForManager(userList.get(i)); 
} 

然后,我需要从列表demandesList获取数据,但我不能让这个列表在循环外,因为这个没有被初始化为

如何从循环内的列表中获取数据?

+0

你为什么要初始化下一行的用户?这没有任何意义..它增加了额外的,不必要的行,并使代码稍微难以阅读。 –

+0

@NathanHughes但我的函数getDemandesForManager()返回一个列表,我如何添加一个列表到列表?我发现'addAll' –

回答

5

那是因为你还没有实际初始化你的第二个列表。

ArrayList<DHDemande> demandesList; 

应该是:

ArrayList<DHDemande> demandesList = new ArrayList<DHDemande>(); 

顺便说一句,你的循环被设套整个demandesList每次迭代的方式。您是否正在寻找List#add

编辑:回答您的评论质疑:

是的,你可以在列表中添加使用ArrayList#addAll另一个列表 - 这将是这样的:

ArrayList<String> userList = user.getListSalarieByManager(login); 
ArrayList<DHDemande> demandesList = new ArrayList<DHDemande>(); 
for (int i = 0; i < userList.size(); i++) { 
    demandesList.addAll(d.getDemandesForManager(userList.get(i))); 
} 

编辑2:只是一个小请注意,您可以将for循环替换为for-each,因为您并不需要知道i(index)的值。

例子:

for (int i = 0; i < userList.size(); i++) { 
    demandesList.addAll(d.getDemandesForManager(userList.get(i))); 
} 

假作:

for (String user : userList) { 
    demandesList.addAll(d.getDemandesForManager(user)); 
} 
+0

非常感谢你,它的工作原理我认为'ArrayList demandesList;'就够了。是的,这就是我一直在寻找的。但我的函数'getDemandesForManager()'返回一个列表,我可以添加一个列表到列表? –

+0

是的,这可以使用'addAll'。 https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#addAll(java.util.Collection) - 我更新了我的帖子中的代码。 – nbokmans

0

你只需要正确初始化列表中,内部或外循环, 但现在看来,要添加元素到循环内的列表。 我将循环中的迭代更改为现代java列表迭代风格。

// initialize variables just so this example compiles 
UserProvider user = new UserProvider(); 
Object login = null; 
DHDemandeProvider d = new DHDemandeProvider(); only 

ArrayList<String> userList; 
userList = user.getListSalarieByManager(login); 
ArrayList<DHDemande> demandesList = new ArrayList<DHDemande>(); // construct list 
for (String u: userList) { 
    demandesList.add(d.getDemandesForManager(u)); // add elements to list 
}