2016-12-04 181 views
-1

我有從數據庫中提取的以下數據。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 

的數據是從使用GoogleAnalyticsPropertyDTO

我需要將其移動到ListSeries(尺寸11〜每天保持數據從11月20日至11月30日),使得

一個PostgreSQL取出

預期結果:

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

我試圖Map<Date, GoogleAnalyticsPropertyDTO> map = new HashMap<Date, GoogleAnalyticsPropertyDTO>(); 但只獲得了最後一個系列的用戶價值爲每個d吃了。有人可以幫助我與日期和名稱值映射在一起,以便爲我的預期列表系列做一個映射嗎? MultiMap可以用於這個嗎?

我與

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; 
    } 
+0

顯示你的代碼書面。沒有這些,我們無法真正幫助你。 –

+0

映射被定義爲每個鍵都有一個值;這聽起來不像你要找的東西。 – ChiefTwoPencils

+0

由於映射不適合我,我將它改爲2D數組。邏輯,但我也無法正確分配名稱..因爲名稱不總是相同的......它根據輸入數據而變化。 –

回答

0

試過,我不相信你的地圖定義將會讓你做你期待什麼樣的代碼。這聽起來像你想要將表中的行映射到日期字符串。什麼那麼你將有一個值是:

Map<String, Collection<GoogleAnalyticsPropertyDTO>>

而且,當你遍歷所有的人,你按日期,像這樣映射:

map.get(dateString).add(gaProperty);