我需要从另一个列表中获取列表,所以这就是我所做的:
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 :(得分: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-each替换你的for循环,因为你真的不需要知道i
(索引)的值。
示例:
for (int i = 0; i < userList.size(); i++) {
demandesList.addAll(d.getDemandesForManager(userList.get(i)));
}
变成:
for (String user : userList) {
demandesList.addAll(d.getDemandesForManager(user));
}
答案 1 :(得分: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
}