2017-04-12 2 views
0

Ich habe eine Map-Implementierung von Map<String, List<String>> und eine Javabean-Klasse mit Member-Variablen der Map-Schlüssel.looping horizontal Map <String, Liste <String>> und Einstellung von Variablen von Javabean

Java Bean-Klasse:

@Data 
public class SplunkConfig { 

    private String parameter1; 
    private String parameter2; 
    private String parameter3; 

} 

Karte:

{host=["abc","def","ghi","jkl"],count=["1","3","4","5"],time=["2017-02-03","2017-02-04","2017-02-04","2017-02-05"]} 

Und ich möchte, wie unten in SplunkConfig Klassenvariablen setzen:

SplunkConfig sc = new SplunkConfig(); 
sc.setParameter1("abc"); 
sc.setParameter2("1"); 
sc.setParameter3("2017-02-03"); 
sc.setParameter1("def"); 
sc.setParameter2("3"); 
sc.setParameter3("2017-02-04"); 
..so on.. 

habe ich eine Reihe Liste Beans zum Speichern der Java-Beans, sobald die Variablen festgelegt sind.

Also, ich muss die Map-Werte einer nach dem anderen jedes Schlüssels durchlaufen und die Javabean-Member-Variablen wie oben gezeigt setzen.

Kann jemand bitte lassen Sie mich wissen, wie man Schleife?

Vielen Dank im Voraus.

+0

Wenn Sie 'setParameter1' zweimal verwenden, ist die erste nützlich, weil sie die erste Operation löscht, was Sie wirklich tun? – azro

+0

@azro, ja ich weiß darüber. Ich habe eine Liste zum Speichern von Beans, sobald die Variablen gesetzt sind. Hoffe ich bin jetzt klar. – harshavmb

+0

Ich habe es hinzugefügt, um zu zeigen, wie ich Schleife sein soll. Danke – harshavmb

Antwort

2

Lassen Sie uns zuerst die Karte rufen mit den Daten mapWithData, und sein Inhalt ist:

{"host"=["abc","def","ghi","jkl"], "count"=["1","3","4","5"], "time"=["2017-02-03","2017-02-04","2017-02-04","2017-02-05"]} 

Beachten Sie, dass die Tasten sind jetzt Strings in doppelten Anführungszeichen.

Jetzt wollen wir eine Liste von von dieser Karte SplunkConfig Objekte erstellen:

int numberOfElements = mapWithData.get("host").size(); 
List<SplunkConfig> config = new ArrayList<SplunkConfig>(); 

for (int i = 0; i < numberOfElements; i++) { 
    SplunkConfig sc = new SplunkConfig(); 
    sc.setParameter1(mapWithData.get("host").get(i)); 
    sc.setParameter2(mapWithData.get("count").get(i)); 
    sc.setParameter3(mapWithData.get("time").get(i)); 

    config.add(sc); 
} 

Es ist besser Praxis ist parameter1 in einem beschreibenden Namen zu nennen - Host. Gleich für Parameter2 und 3.

Sie können schließlich Config verwenden oder zurückgeben.

+0

Ich wollte eigentlich dynamisch loopen, ohne 'host',' count' und 'time' zu ​​geben, falls ich eine neue Variable in der' SplunkConfig' Klasse hinzufügen muss. Aber irgendwie ist es gelungen, die Daten mit 'reflection' api zu ziehen. Vielen Dank für deine Antwort. – harshavmb

Verwandte Themen