如何存储所有ArrayList <arraylist <string>&gt;值到ArrayList <string>?

时间:2018-06-15 11:30:36

标签: java android

我遇到将timeOffset == 0的所有值存储到ArrayList<ArrayList<String>>的问题。这里ArrayList<String>stylistIDArray是数组的数组。我想将所有值分别存储在durationArraystylistId中。 durationstylistid是字符串数组。

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

duration

注意:我已经尝试this,但不适合我。

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:0)

您使用arraylist执行错误操作,在循环中从stylistIDArray获取数据并分配给aryalist,而不是插入列表中,看看这个

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.add(stylistIDArray.get(i));
                           duration.add(durationArray.get(i));
                       }

希望它会对你有所帮助!