HashMap获取一个元素并设置为自定义值类型

时间:2013-05-04 19:48:16

标签: java nullpointerexception

我设置get元素并设置为自定义值类型时遇到问题。 这是我的自定义类型用户

public class User {

 private List<Integer> FriendList=new ArrayList<Integer>(); //Uid list
 private HashMap<String,String> CheckinMap =new HashMap<String, String>(); // location and time
 private int Uid;

 public User(int uid){
    this.Uid=uid;
 }
 public int getId(){
    return Uid;
 }
 public void setCheckins(HashMap<String,String> InMap){
    this.CheckinMap=(HashMap<String, String>) InMap;
 }
 public void setAFriend(int uid){
   this.FriendList.add(uid);
 }  
}

然后,我解析一个JSON数组来获取数据,我确信在这里解析JSON很好。

HashMap<Integer,User> UserMap =new HashMap();
HashMap<String,String> InMap =new HashMap();
     for(i=0;i<users.size();i++){
              JSONObject auser=(JSONObject)users.get(i);
              temp_uid=Integer.parseInt(auser.get("uid").toString());
              UserMap.put(temp_uid, new User(temp_uid));
              JSONArray checkins=(JSONArray)auser.get("check-ins");
              for(j=0;j<checkins.size();j++){
                  InMap.put( ((ArrayList) checkins.get(j)).get(0).toString(),  ((ArrayList) checkins.get(j)).get(1).toString());

              }
              UserMap.get(i).setCheckin(InMap);
              checkin_cnt=checkin_cnt+checkins.size();
     }

我的Eclipse告诉我,异常java.lang.NullPointerException就行了。 UserMap.get(i).setCheckin(InMap);

我可以只初始化Uid,但稍后设置FriendList和CheckinMap吗?听起来很有道理。 请给我一些提示或建议。感谢

1 个答案:

答案 0 :(得分:1)

从这段代码中我应该假设用户的UID始终与它的索引相同。

如果我的假设是错误的,这是一个原因,你应该要求UserMap.get(temp_uid)而不是UserMap.get(i)