2016-05-18 18 views
1

Ich lese Daten aus einer CSV-Datei und möchte sie in hashMap speichern. Es gibt 3 Spalten, alle von ihnen Strings. Ich verwende diesen Code:Daten dynamisch in HashMap laden

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); 
    } 

Die listdataChild die Informationen des 2. halten sollte und 3. Spalte in der CSV. Momentan lädt es diese Information mehr als einmal. Ich würde irgendwelche Ideen begrüßen, danke!

+0

Ihre Frage ist nicht sehr klar, in Ihrer CSV die erste Spalte ist Ihre Kopfzeile? und möchten Sie die Spalten 2 und 3 in der Karte als Werte und die erste Spalte als Schlüssel in der Karte behalten? –

+0

Ja, genau. Die erste Spalte enthält die Informationen, die im listDataHeader (Schlüssel) enthalten sein müssen, während die nächsten beiden als Werte fungieren und in listdataChild gespeichert werden müssen. Vielen Dank! – VyaraG

Antwort

1

Sie könnten dies mit nur einer Iteration tun.

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

Hier werden Sie durch die Reihen Ihrer csv Iterieren und eine neue Liste und geben Sie Ihre zweite und dritte Spalte auf dieser Liste und fügte hinzu, dass die Liste der Karte zu schaffen.

+0

Vielen Dank für die Antwort! Aber wo soll ich sagen, dass info die Informationen aus den Spalten 2 und 3 speichert? – VyaraG

+0

Sehen Sie sich den aktualisierten Code an. –