2016-05-18 66 views
1

我正在读取CSV文件中的数据并希望将其存储到hashMap中。有3列,都是字符串。我使用此代码:将数据动态加载到HashMap中

listDataHeader = new ArrayList<String>(); 
    listDataChild = new HashMap<String,List<String>>(); 

    InputStream inputStream = getResources().openRawResource(R.raw.photographers); 
    CSVReader csv = new CSVReader(inputStream); 
    List<String[]> data = csv.read(); 
    List<String> info = new ArrayList<String>(); 

    for(String[] children : data){ 
     info.add(children[1]); 
     info.add(children[2]); 
    } 

    //fill data for the child 

    for (String[] line : data) { 
     listDataHeader.add(line[0]); 
     listDataChild.put(listDataHeader.get(0),info); 
    } 

的listdataChild应保持在CSV第二和第三列的信息。目前,它不止一次加载该信息。我欢迎任何想法,谢谢!

+0

你的问题不是很清楚,你的CSV第一列是你的头?你想在地图中保留第2列和第3列作为值和第一列作为键的键? –

+0

是的,确切地说。第一列保存需要进入listDataHeader(key)的信息,而后两个函数作为值并需要存储在listdataChild中。谢谢! – VyaraG

回答

1

你可以用一次迭代来做到这一点。

for (String[] line : data) { 
    List<String> info = new ArrayList<String>(); 
    info.add(line[1]); 
    info.add(line[2]); 
    listDataChild.put(line[0], info); 
} 

在这里,你是通过你的csv的行迭代并创建一个新的名单和增加你的第二个和第三列于该名单并加入该列表地图。

+0

谢谢你的回答!但我应该在哪里说信息存储了第2列和第3列的信息? – VyaraG

+0

看看更新的代码。 –