2017-08-09 22 views
-1

當我嘗試編譯這行代碼:與Java lambda表達式流tomap給我錯誤

public Map<String,Long>countBranchesPerMunicipality(){ 
    return mappamun.values().stream() 
      .collect(toMap(m->m.getName() , m->m.getBranches().size())); 
} 

它給我的錯誤:

cannot convert from Map<Object,Object> to Map<String,Long> .

誰能給我解釋一下爲什麼?

+3

什麼類型有'mappamun'?你可以提供[MCVE](https://stackoverflow.com/help/mcve)嗎? –

回答

0

getBranches()方法返回很可能是Collection實例和Collection.size()返回一個int不是long

所以,你應該從

Map<String,Long> 

改變方法的返回類型:

Map<String,Integer> 

當然m.getName(),並應返回一個字符串。

3
int size(); 

這是什麼List<E> extends Collection<E>返回。自動裝箱會將int s變成Integer s,但不會變成Long s。這就是爲什麼你得到編譯錯誤。

有2種可能的選擇:

  1. 改變返回類型Map<String, Integer>(優選);
  2. 將尺寸鑄造到long(long)m.getBranches().size()
+0

我如何在這個流中投入很長時間?謝謝 –

+0

@SamuraiJack,你爲什麼停下來的第二個選項? – Andrew

+0

因爲這是一個學校的練習,我不能改變地圖的類型 –