2016-05-04 46 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