2016-05-04 75 views
0

我在嘗試方法時遇到了投射錯誤。 我無法弄清楚這裏的實際問題。無法投射列表

(List)成員 - >此行生成轉換錯誤,因爲類無法轉換爲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

如何將集合投射到單個元素?您知道列表是'會員'的集合嗎? – SomeDude

+0

@svasa membersSplitByState.put(member.getState(),(List )member) 我需要將單個成員對象放在Map中,而我將成員放置在那裏它建議將其轉換爲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

非常感謝@Thomas :) – 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

謝謝@Mrunal。 我已經嘗試了兩個答案。 TY – rzenks

+0

歡迎你的朋友@rzenks – PeaceIsPearl