我使用树形图将数据添加到我的系统中。 我希望用户能够在已添加到系统中的对象中更改某个值。 为了让用户选择他/她想要更改的值,我使用它将其打印到屏幕上。
for(Employee employee : employeeMap.values())
{
System.out.println("Employe no :" +x+": "+employee);
x++;
}
然后,为了访问用户选择的树图中的objects元素,我尝试使用它:
System.out.println("this employee @@@@@##### is no: "+employeeMap.get(x));
这是我成功用于arraylists的东西,但似乎并不起作用似乎所有的值在使用这种方法时都是null。
有人可以告诉我一个更好的方法。
答案 0 :(得分:2)
访问Map中的条目时,必须使用密钥,而不是ArrayLists中的索引。如果该键不存在,您将返回null,这就是您所看到的。对于您的示例,您已经可以访问employee
循环中的for
对象,因此您无需再次从地图中get
。
您可能希望使用employeeMap.entrySet()
来同时迭代键和值,然后您可以说employeeEntry.getKey()
之类的内容,以查看给定条目的键是什么,像这样(省略了泛型,因为我不知道你的密钥的类型,并且还假设密钥是员工编号):
for(Map.EntrySet employeeEntry : employeeMap.entrySet()) {
System.out.println("Employee no :" + employeeEntry.getKey() +": " + employeeEntry.getValue());
}
答案 1 :(得分:0)
基本上您可以通过键
访问地图值在你的代码片段中,employeeMap.get(x),'x'看起来不像是键。向我们展示如何填充employeeMap
<强>更新强>
由于您使用员工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));
答案 2 :(得分:0)
Map是键值对。你只是无法使用任何索引访问map中的值(就像你使用x并在循环x ++中递增它一样。)你需要使用插入数据时输入的密钥。我建议你采取以下方式。
for(String key:employeeMap.keySet())
{
System.out.println("Employe no :" +x+": "+employee.get(key));
x++;
}