我有以下系列:
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();
}
答案 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;
}