2016-05-18 25 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で2番目と3番目の列の情報を維持する必要があります。現在、その情報を複数回読み込んでいます。私はどんなアイデアを歓迎します、ありがとう!

+0

あなたの質問はあまり明確ではありません。あなたのCSVの最初の列はヘッダーですか?マップの2列目と3列目を値として保持し、最初の列をマップ内のキーとして保持したいとしますか? –

+0

はい、正確です。最初の列はlistDataHeader(キー)に入る必要のある情報を保持しますが、次の2つは値として機能し、listdataChildに格納する必要があります。ありがとう! – VyaraG

答えて

1

これは、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ファイルの行を反復処理し、新しいリストを作成し、そのリストにあなたの2列目と3列目を追加し、マップにそのリストを追加しています。

+0

ありがとうございました!しかし、情報は列2と3の情報をどこに格納していると言えばいいですか? – VyaraG

+0

更新されたコードを見てください。 –

関連する問題