Java在TreeMap上迭代 - 不兼容的类型

时间:2014-01-10 22:41:32

标签: java iterator iteration treemap

我有以下系列:

private Map <String, Staff> staff;

实现为TreeMap:

staff = new TreeMap <String, Staff> ();

我需要遍历此映射中的值,但是当我尝试以下代码时,我遇到了不兼容的类型编译错误。我不明白为什么会这样;我的地图中的值是Staff对象和

it.HasNext() 

应该返回它们存储在staffMember变量中,这应该对我的知识很好?非常感谢。

Collection <Staff> staffList = staff.values(); 
         Iterator it = staffList.iterator ();
         while ((isJobAssigned = false) ||it.hasNext())
         {
             Staff staffMember = it.next(); 
             if ((staffMember instanceof Typist) && (jobType.equalsIgnoreCase("Typist")))
             {
                 newJob.setJobState ("Assigned");
                 staffMember.setState("Working");
                 return newJon.getJobNo() + " Staff allocated: " + staffMember.getName () + ", ID: " + staffMember.getId();
                }

2 个答案:

答案 0 :(得分:6)

您正在使用原始Iterator。您需要转发Staff Object返回的it.next()或使用通用Iterator

使用原始迭代器:

Staff staffMember = (Staff)it.next(); 

使用通用迭代器(我推荐这个版本):

Iterator<Staff> it = staffList.iterator();
Staff staffMember = it.next();  //you can keep this

答案 1 :(得分:3)

你为什么不使用:

for (Staff st : staff.values()){
 // do your stuff
 if(st instanceof Typist) break;   
}