获取循环外的列表

时间:2016-01-13 15:21:36

标签: java

我需要从另一个列表中获取列表,所以这就是我所做的:

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

然后我需要从列表demandesList中获取数据,但我无法在循环外获取此列表,因为尚未初始化

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

2 个答案:

答案 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
}