【问题标题】:Set elements added to List, then mess设置元素添加到列表,然后混乱
【发布时间】:2011-12-05 22:20:37
【问题描述】:

所以基本上我有这个类League的构造函数:

import java.util.*;

public class League {

    private String name;
    private List<Team> teamList;

    public League(String name) {        
        List<String> teamNames = new LinkedList<String>(Company.teamList);
        Collections.shuffle(teamNames);
        teamNames.subList(0, 5);

        for(int i = 0; i < teamNames.size(); i++){
            teamList.add(new Team(teamNames.get(i)));
        }
}
}

Company 类恰好有一个名为 teamListSet。 当我调用System.out.println(teamNames.get(i)) 时,它向我显示了内容,很明显集合的元素在那里,但是当我尝试根据字符串列表的元素创建一个新的Team 对象时,它给了我一个@987654328 @。 我不知道这是为什么?帮忙?

如果您需要,这里是 Team 类的代码:

import java.util.HashMap;
import java.util.Map;


public class Team {

    protected Map<Integer, Player> teamPlayerMap;
    private String teamName;

    public Team(String name) {
        teamPlayerMap = new HashMap<Integer, Player>();
        teamName = name;
    }

    public String getTeamName() {
        return teamName;
    }


}

【问题讨论】:

  • 请尝试提出一个简短但完整的程序来演示问题。
  • 堆栈跟踪告诉你什么?
  • new Team(null) 不可能抛出空指针异常。请向我们展示更多代码以提供帮助。

标签: java list collections set


【解决方案1】:

我认为问题出在这里:

private List<Team> teamList;

public League(String name) {        
    // etc...

    for(int i = 0; i < teamNames.size(); i++) {
        teamList.add(new Team(teamNames.get(i))); // This will throw!
    }
}

您需要创建一个实现List&lt;Team&gt; 的类的实例并将其分配给teamList。你还没有这样做,所以当你调用teamList.add(...)时它会抛出一个NullPointerException

解决方法是改为这样写:

private List<Team> teamList = new ArrayList<Team>();

【讨论】:

    【解决方案2】:

    你必须初始化teamList:

    private List<Team> teamList = new ArrayList<Team>();
    

    【讨论】:

      【解决方案3】:

      问题是因为我认为您没有创建 teamList 的实例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-16
        相关资源
        最近更新 更多