0

我使用树图将数据添加到我的系统中。我希望用户能够更改已添加到系统的对象中的某些值。为了让用户选择他/她想要更改的值,我使用它将其打印到屏幕上。

for(Employee employee : employeeMap.values())
{
    System.out.println("Employe no :" +x+": "+employee);
    x++;
}

然后为了访问用户选择的树形图中的对象元素,我尝试使用以下方法:

 System.out.println("this employee @@@@@##### is no: "+employeeMap.get(x));

这是我已成功使用数组列表的方法,但它似乎不起作用,似乎在使用这种方法时所有值都是空的。

有人可以告诉我一个更好的方法吗?

4

3 回答 3

2

访问 Map 中的条目时,必须使用键,而不是 ArrayLists 中的索引。如果该键不存在,您将返回 null,这就是您所看到的。在您的示例中,您已经可以访问循环中的employee对象for,因此您不需要get再次从地图中访问它。

你可能想看看 usingemployeeMap.entrySet()来一次迭代键和值,然后你可以说一些类似的东西employeeEntry.getKey()来看看给定条目的键是什么,就像这样(省略泛型,因为我不知道您的密钥类型,并假设密钥是员工编号):

for(Map.EntrySet employeeEntry : employeeMap.entrySet()) {
    System.out.println("Employee no :" + employeeEntry.getKey() +": " + employeeEntry.getValue());
}
于 2011-10-19T05:20:27.720 回答
0

映射是键值对。您只是不能使用任何索引访问映射中的值(就像您使用 x 并在循环 x++ 中递增它一样。)您需要在插入数据时使用您输入的键。我建议您采用以下方式。

for(String key:employeeMap.keySet())
{
    System.out.println("Employe no :" +x+": "+employee.get(key));
    x++;
}
于 2011-10-19T05:30:58.087 回答
0

基本上你通过键访问你的地图值

在您的代码段中,employeeMap.get(x), 'x' 看起来不像关键。向我们展示您如何填充员工地图

更新

由于您使用员工 ID 作为键,您可以使用它来检索值

for (Employee employee : employeeMap.values()) {
    System.out.println("Employe no :" +employee.getRandomIDno()+": "+employee);
    Object thekey = employee.getRandomIDno();
}

然后,

System.out.println("this employee @@@@@##### is no: "+employeeMap.get(thekey));    
于 2011-10-19T05:20:25.207 回答