Ich habe die folgenden Daten aus DB abgerufen.Verschachtelte Mapping in Java
Date Name users
----- ------- ------
2016-11-23 00:00:00 aaaa 11
2016-11-24 00:00:00 aaaa 12
2016-11-25 00:00:00 aaaa 14
2016-11-24 00:00:00 bbbb 21
2016-11-26 00:00:00 bbbb 22
2016-11-23 00:00:00 cccc 31
2016-11-25 00:00:00 cccc 32
die Daten entnommen von einem postgresql Verwendung GoogleAnalyticsPropertyDTO
I an einen ListSeries bewegen muß, so daß
(der Größe 11 Daten von 20-Nov bis 30-Nov für jeden Tag zu halten)Erwartetes Ergebnis:
result[0] = new ListSeries("aaa" , new Number[] { 0,0,0,11,12,14,0,0,0,0,0});
result[1] = new ListSeries("bbb" , new Number[] { 0,0,0,0,21,22,0,0,0,0,0 });
result[2] = new ListSeries("ccc" , new Number[] { 0,0,0,31,0,32,0,0,0,0,0 });
versuchte ich Map<Date, GoogleAnalyticsPropertyDTO> map = new HashMap<Date, GoogleAnalyticsPropertyDTO>();
aber für jeden d nur Benutzer Wert der letzten Reihe bekommen aß. Kann mir jemand bei einer Zuordnung mit Date und dem Wert Name helfen, um eine Zuordnung für meine erwartete Listenserie zu erstellen? Kann MultiMap dafür verwendet werden?
Der Code, den ich versuchte, mit
private Number[] getData(Date fromDate, Date toDate) {
Date from = DateUtility.getDateWithoutTime(fromDate.getTime());
Date to = DateUtility.getDateWithoutTime(toDate.getTime());
Number[] result;
int days = DateUtility.getDaysBetweenDates(from, to);
result = new Number[days];
List<GoogleAnalyticsPropertyDTO> gaPropList = XXXXXUI.getBusinessService().getGAProperty(fromDate, toDate);
Map<Date, GoogleAnalyticsPropertyDTO> map = new HashMap<Date, GoogleAnalyticsPropertyDTO>();
if (gaPropList != null) {
for (GoogleAnalyticsPropertyDTO gaProperty : gaPropList) {
Date dateString = gaProperty.getFromDate();
map.put(dateString, gaProperty);
}
Date date;
for (int d = 0; d < days; d++) {
date = DateUtility.addNDaysToDate(from, d);
if (null == map.get(date)) {
result[d] = 0;
} else {
GoogleAnalyticsPropertyDTO a = (GoogleAnalyticsPropertyDTO) map.get(date);
if (null == a.getUsers()) {
result[d] = 0;
} else {
result[d] = a.getUsers();
}
}
}
}
return result;
}
Zeigen Sie den Code, den Sie haben geschrieben. Ohne das können wir dir nicht wirklich helfen. –
Die Karte ist so definiert, dass für jeden Schlüssel ein einzelner Wert vorhanden ist. das klingt nicht nach dem, wonach du suchst. – ChiefTwoPencils
Da Mapping für mich nicht funktionierte, habe ich es in ein 2D-Array geändert. Logik, aber ich bin auch nicht in der Lage, den Namen richtig zuzuweisen .. da die Namen nicht immer gleich sind ... Es ändert sich entsprechend den Eingabedaten. –