2017-03-17 9 views
0

なぜこのコードがコンパイルされないのですか?Java 8コレクションストリームコレクタ.toMap

私はここで間違っている何ストリームとtoMapオプション

List<CountryToPaymentMethodsDisplayRules> 
    paymentMethodDisplayRulesByCountryList = 
     gatway.getCountryPaymentMethodsDisplayRulesByCountry(); 

Map<PaymentMethod, CountryToPaymentMethodsDisplayRules> 
    countryToPaymentMethodsDisplayRulesMap = paymentMethodDisplayRulesByCountryList 
     .stream() 
     .collect(Collectors.toMap(type -> type.getCountryToPaymentMethodsDisplayRules().getPaymentMethod(), 
           type -> type)); 

public interface PaymentMethod extends Serializable { 
} 

public enum PaymentMethodType implements PaymentMethod, Serializable { 
} 

public interface CountryToPaymentMethodsDisplayRules { 
    public PaymentMethod getPaymentMethod(); 
} 

public class CountryToPaymentMethodsDisplayRulesEntity implements CountryToPaymentMethodsDisplayRules, PersistentEntity<Long>, Serializable { 
    @Type(type = "com.plimus.core.payment.PaymentMethodTypeUserType") 
    @Column(name = "PAYMENT_TYPE") 
    private PaymentMethod paymentMethod; 
} 

を使用してマップするためにリストを変換しようか?

+2

(私はあなたのためにフォーマットを変更した - 書式設定のヘルプを読むと、プレビューが合理的なフォーマットを示してまで投稿を避けてください)しかし、あなたはどのように言っていないこと理想的には、これを[mcve]として書き直してください。 –

+2

getCountryToPaymentMethodsDisplayRulesメソッドが見つかりません。この方法に関するいくつかの情報を提供できますか? –

+3

実際、ここで何が間違っていますか?それは例外を生成しますか?それは空の地図を作りますか?それは無期限に実行されますか?私たちは決して知らないかもしれません! –

答えて

1

は、おかげで

Map<PaymentMethod, CountryToPaymentMethodsDisplayRules> 
countryToPaymentMethodsDisplayRulesMap = paymentMethodDisplayRulesByCountryList 
    .stream() 
    .collect(Collectors.toMap(type -> type.getPaymentMethod(), 
          type -> type)); 
+4

あなたは本当に、存在しないメソッドを呼び出すことは、メソッド呼び出しを削除することによって解決できるという発見は、今後の読者にとって価値があると思いますか? – Holger

7

あなただけのメソッド参照およびアイデンティティとCollections.toMap()方法を提供する必要がある問題を発見しました。これを試してみてください:

あなたには、いくつかのコードを提供してきましたまあ
Map<PaymentMethod, CountryToPaymentMethodsDisplayRules> 
    countryToPaymentMethodsDisplayRulesMap = paymentMethodDisplayRulesByCountryList 
    .stream() 
    .collect(Collectors.toMap(CountryToPaymentMethodsDisplayRules::getPaymentMethod,x->x); 
+2

なぜこれがupvotedされていない取得しないでください。メソッド参照は問題を解決せず、単一のパラメータを持つ 'Collectors.toMap'関数が存在しません... – Roland

+0

@Roland、あなたは絶対に正しいです。これは私の部分で間違いでした。今すぐ修正します:) – CraigR8806

+1

もっと良い;-) – Roland