2011-10-19 81 views
0

我已經使用樹形圖來將數據添加到我的系統中。 我希望用戶能夠在添加到系統中的對象內改變某個值。 爲了讓用戶選擇他/她想要更改的值,我使用它將其打印到了屏幕上。如何訪問TreeMap中的特定元素?

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

然後才能用於訪問對象元素在樹狀圖,用戶已經選擇我已經試過這樣:

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

這是我已經成功地與的ArrayList使用,但它確實似乎沒有工作似乎使用這種方法時,所有的值都是空的。

有人請告訴我一個更好的方法。

+0

在訪問其值之前是否已將數據存入employeeMap? –

+0

是的我有這樣的 \t theEmployee = new Employee(randomIDno,fName,sName,gender,dPayLevel); \t \t \t \t employeeMap.put(randomIDno,theEmployee); – Binyomin

+0

'x'究竟是什麼? – aldrin

回答

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));  
+0

像這樣 \t theEmployee = new Employee(randomIDno,fName,sName,gender,dPayLevel); \t \t \t \t employeeMap.put(randomIDno,theEmployee); – Binyomin

2

訪問Map中的條目時,您必須使用該鍵,而不是ArrayList中的索引。如果該鍵不存在,您將返回null,這就是您所看到的。以您的示例爲例,您已經可以訪問for循環中的employee對象,因此您不需要再次從地圖中獲取get

您可能想要看看使用employeeMap.entrySet()而不是同時遍歷鍵和值,然後您可以說類似於employeeEntry.getKey()的內容來查看給定條目的關鍵字是什麼(例如,忽略泛型因爲我不知道你的鑰匙的類型,並且還假設,關鍵是員工數量):

for(Map.EntrySet employeeEntry : employeeMap.entrySet()) { 
    System.out.println("Employee no :" + employeeEntry.getKey() +": " + employeeEntry.getValue()); 
} 
+0

謝謝我會給這一個嘗試 – Binyomin

0

地圖是關鍵值pair.you只是無法從地圖中使用任何指標(如使用的是X訪問值並在一個循環x ++中增加它)。您需要在插入數據時使用您輸入的密鑰。我會建議你以下方式。

for(String key:employeeMap.keySet()) 
{ 
    System.out.println("Employe no :" +x+": "+employee.get(key)); 
    x++; 
} 
+0

我喜歡你的想法,但是當我輸入到我的系統時,我得到的錯誤 「找不到符號方法得到int」 我改變了從字符串的密鑰值爲int作爲我的密鑰正在作爲int值輸入 – Binyomin