2016-05-18 102 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

看看更新的代碼。 –