一尘不染

如何存储所有ArrayList>将值放入ArrayList?

java

我有问题来存储的所有值ArrayList<ArrayList<String>>ArrayList<String>。这里stylistIDArraydurationArray是数组的数组。我想将它们的所有值分别存储在stylistId和中duration。的stylistidduration是字符串的数组。

这是我的尝试,但仅存储每个数组的最后一项。

ArrayList<ArrayList<String>> stylistIDArray;
ArrayList<ArrayList<String>> durationArray;
stylistIDArray = differentGenderServicesAdapter.getSelectedStylistIdArray();                
durationArray = differentGenderServicesAdapter.getSelectedDurArray();

ArrayList<String>stylistId = new ArrayList<>();
ArrayList<String>duration = new ArrayList<>();

for(int i=0; i<stylistIDArray.size(); i++) {
    stylistId = stylistIDArray.get(i);
    duration = durationArray.get(i);
}

注意:我已经尝试过,但是对我不起作用。


阅读 304

收藏
2020-12-03

共1个答案

一尘不染

为了通用,首先让它成为对象列表

List<List<Object>> listOfList;

您想要放入对象列表

List<Object> result;

注意结果列表将包含每个对象,包含的是输入列表。 这种转换将丢失有关哪个对象位于哪个列表中的信息。

您必须遍历listOfList。在每个循环中,您都会获得一个对象列表(List<Object> listOfObject)。然后遍历这些列表以获得每个对象(Object o)。然后将这些对象添加到结果列表(result.add(o))。

for(List<Object> listOfObject : listOfList) {
    for(Object o : listOfObject) {
        result.add(o);
    }
}

就您而言,问题是您使用情感代替add()。在每个循环中,它将用新值替换该值。因此,最后只存储了每个列表的最后一项。

stylistId=stylistIDArray.get(i); //This replace the existing stylistId

而是尝试类似

ArrayList<ArrayList<String>> stylistIDArray;
ArrayList<ArrayList<String>> durationArray;
stylistIDArray = differentGenderServicesAdapter.getSelectedStylistIdArray();
durationArray = differentGenderServicesAdapter.getSelectedDurArray();

ArrayList<String> stylistId = new ArrayList<>();
ArrayList<String> duration = new ArrayList<>();

for(ArrayList<String> l : stylistIDArray) {
    for(String s : l) {
        stylistId.add(s);
    }
}
for(ArrayList<String> l : durationArray ) {
    for(String s : l) {
        duration.add(s);
    }
}
2020-12-03