2016-05-04 14 views
0

メソッドを試しているときにキャストエラーが発生しました。 私はここで実際の問題を理解することができませんでした。Listでクラスをキャストできませんでした

(member) - >この行は、クラスがCan notをListにキャストできないため、キャストエラーを生成しています。

この問題をどのように更新できますか?

とjava.lang.ClassCastException:com.test.Memberありがとうcom.test.impl.Main.splitMembersByState

protected Map< String, List< Member>> splitMembersByState(List< Member> validMembers) { 
    // TODO 

    Map< String, List< Member>> membersSplitByState = new HashMap<String, List<Member>>(); 
    List<Member> tempList = validMembers; 

    for (Member member : validMembers) { 
     membersSplitByState.put(member.getState(), (List<Member>) member); 

    } 

    return membersSplitByState; 
    } 

でjava.util.Listに にキャストすることはできません。

+1

コレクションを1つの要素にキャストするにはどうすればよいですか?リストはメンバーのコレクションであることを理解していますか? – SomeDude

+0

@svasa membersSplitByState.put(member.getState()、List )メンバー Mapに単一のMemberオブジェクトを配置する必要があります。メンバーを配置するときにListにキャストすることを提案します。 私はこの問題を解決できませんでした。 – rzenks

答えて

1

membersSplitByStateはString - > Listであり、メンバー(メンバー)を入れようとしています。

ここでは、メンバーをマップの直接ではなくメンバーのリストに入れたいとします。そのような何か:

Map< String, List< Member>> membersSplitByState = new HashMap<String, List<Member>>(); 
    List<Member> tempList = validMembers; 

    for (Member member : validMembers) { 
     List<Member> membersWithState; 
     if (membersSplitByState.containsKey(member.getState()) { 
      membersWithState = membersSplitByState.get(member.getState()); 
     } else { 
      membersWithState = new ArrayList<Member>(); 
      membersSplitByState.put(member.getState(), membersWithState); 
     } 
     membersWithState.add(member); 
    } 
    return membersSplitByState; 
+0

ありがとう@トーマス:) – rzenks

1

あなたがオブジェクトとなり、例外のリストにオブジェクト(あなたのケース内の要素)をキャストすることはできません。 コード内のforループを次のコードに置き換えてみてください。

for (Member member : validMembers) { 
      String key = member.getState(); 
      List<Member> newList = membersSplitByState.get(key); 
      if(newList == null) { 
      newList = new ArrayList<>(); 
      membersSplitByState.put(key, newList); 
      } 

      newList.add(member); 

     } 
+0

ありがとう@ムンナール。 私は両方の答えを試しました。 TY – rzenks

+0

あなたの歓迎の友達@rzenks – PeaceIsPearl

関連する問題