2017-06-09 7 views
-1

次のコードは、マップのリストをこのマップのリストのすべての要素を含む1つのマップに変換すると予想されるJava 8ストリームです。以下のテストデータは、throwing aを整数例外にキャストできません。java 8ストリームのマップを1つのマップに変換します。整数例外にキャストできません

Map test = new HashMap(); 
test.put("PreLoadTransactionId", 1234); 
List<Map<String, String>> preloadTranactions = new List<>(); 
preloadTranactions.add(test); 
final Map<String, Date> preloadTranactionIdUpdateMap = preloadTranactions.stream() 
    .collect(Collectors.toMap(
     preloadTransaction -> preloadTransaction.get("PreLoadTransactionId"), 
     preloadTransaction -> new Date(preloadTransaction.get("UpdateDate")), 
     (preloadTranaction1, preloadTranaction1Dup) -> preloadTranaction1)); 

リストをマップに変換することが期待され、このマップのリストのすべての要素が含まれています。代わりに例外が発生する: "java.lang.Integerはjava.lang.Stringにキャストできません"

どうすればこの例外が発生しますか?

+1

Can not replicate。 preloadTranactions = newList <>(); 'は、' List >でなければなりません。preloadTranactions = new ArrayList <>(); ' - いくつかの警告。なぜあなたは 'Date(String)'を使っていますか? –

+0

入力が日付文字列であるため、Date(String)を使用しています。 – starcraftOnCrack

答えて

2

まず、このコードスニペットから、マップ内の "PreLoadTransactionId"フィールドと "UpdateDate"フィールドのタイプを知りません。

いずれかが整数の場合、このエラーが発生します。 preloadTransactionsのマップがどのように設定されているかを確認する必要があります。 このそれはMap<String, String>のように定義されている場合、ここでの例のため、何の意味もありません:文字列と地図だから

値としてのtransactionIdもそれがpreloadTranactionsに宣言されているよう

List<Map<String, String>> preloadTranactions = new ArrayList<>(); 
    Map test = new HashMap(); 
    test.put("PreLoadTransactionId", 1234); 
    preloadTranactions.add(test); 

あなたは整数を救うことができますマップがどのように埋め込まれているかを確認したり、母集団を修正したり、コレクターのStringに明示的にキャストする必要があると思います:

preloadTranactions.stream() 
     .collect(Collectors.toMap(
       preloadTransaction -> 
       String.valueOf(//THIS WILL FIX THE ISSUE EVEN IF VALUE IS NUMBER 
        preloadTransaction.get("PreLoadTransactionId") 
       ), 
       preloadTransaction -> new Date(preloadTransaction.get("UpdateDate")), 
       (preloadTranaction1, preloadTranaction1Dup) -> preloadTranaction1)); 
+0

はい、あなたは私のために働いています。それでも私はあなたが整数を入れて、定義された型がStringであるときに例外を投げないのはなぜか困惑します... – starcraftOnCrack

関連する問題