如何在TreeMap中访问特定元素?

时间:2011-10-19 05:10:51

标签: java object elements treemap

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

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。

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

3 个答案:

答案 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++;
}