我正在尝试使用字符串作为键创建一个映射,将值作为一组Runner对象创建.
然而,当我用一些随机数据填充地图时,我得到一个NullPointerException并且我无法弄明白.
请参阅以下代码:
public class EventRunners
{
// instance variables - replace the example below with your own
public Map<String, Set<Runner>> runnerMap;
/**
* Constructor for objects of class EventRunners
*/
public EventRunners()
{
Map <String, Set<Runner>> runnerMap = new HashMap<>();
}
/**
* Populates the map with appropriate data
*/
public void createMap()
{
/**
* Create the Runner objects
*/
Runner runner1 = new Runner("Simon", "Strain", "4:45:00" );
Runner runner2 = new Runner("James", "Cashin", "4:45:00" );
Runner runner3 = new Runner("Mark", "Perez", "3:30:00" );
Runner runner4 = new Runner("Mairi", "Henderson", "3:25:00" );
Runner runner5 = new Runner("David", "Pitts", "4:35:00" );
Runner runner6 = new Runner("Matthew", "Davis", "4:55:00" );
Runner runner7 = new Runner("Richard", "Boulton", "3:20:00" );
Runner runner8 = new Runner("Harriet", "Edwards", "4:30:00" );
Runner runner9 = new Runner("Sheree", "Slater", "4:40:00" );
Set <Runner> runnerWave = new HashSet<>();
runnerWave.add(runner1);
runnerWave.add(runner2);
runnerWave.add(runner3);
System.out.println(runnerWave);
runnerMap.put("Green", runnerWave);
runnerWave = new HashSet<>();
runnerWave.add(runner4);
runnerWave.add(runner5);
runnerWave.add(runner6);
runnerMap.put("Blue", runnerWave);
runnerWave = new HashSet<>();
runnerWave.add(runner7);
runnerWave.add(runner8);
runnerWave.add(runner9);
runnerMap.put("Red", runnerWave);
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
您的错误在构造函数中:
public EventRunners()
{
Map <String, Set<Runner>> runnerMap = new HashMap<>();
}
您正在初始化局部变量,而不是字段.取下Map <String, Set<Runner>>前面的.
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |