2017-08-09 3 views
-1

のエラー与える:のJavaストリーム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>が返すものです。オートボクシングはをIntegerに変換しますが、Longには変換しません。そのため、コンパイルエラーが発生します。

は、2つの可能なオプションがありますに戻り型を変更

  1. Map<String, Integer>(好ましい)
  2. サイズをlongにキャストする:(long)m.getBranches().size()
+0

どうすればそのストリームで長くキャストすることができますか? –

+0

@ SamuraiJack、なぜあなたは2番目の選択肢で停止しましたか? – Andrew

+0

学校の運動で、私はマップのタイプを変更できません –

関連する問題