关于我的问题的一些背景知识: 我有一个包含两个子类的People类:Employee和Customers。两个类共享id和name字段。此外,Employee类还有另一个字段:salary。
我需要得到最低工资的对象(类型为Employee)的hashMap键...在hashMap中,Employees和Customers对象具有一些不同的字段。
以下是我准备的代码:
public String getKeyLowestWage(){
String k;
double wage;
wage = 0;
Iterator it = ppl.values().iterator();
while (it.hasNext())
{
People s = (People) (it.next() );
if (s instanceof Employee)
{
if ((Employee(getWage()) > wage))
wage = getWage();
k = getKey();
}
}
return k;
}
答案 0 :(得分:1)
你的测试大于,不小于。此外,你应该使用大括号。
if ((Employee(getWage()) > wage))
wage = getWage();
k = getKey();
如果你正确缩进
if ((Employee(getWage()) > wage))
wage = getWage();
k = getKey();
所以,像
if ((Employee(getWage()) < wage)) {
wage = getWage();
k = getKey();
}
应该是你要求的。
答案 1 :(得分:1)
首先我认为你需要一些括号,你应该反转比较:
if ((Employee(getWage()) < wage)) {
wage = getWage();
k = getKey();
}
当然,您需要将工资价值初始化为最大可能值:
double wage = Double.MAX_VALUE;
答案 2 :(得分:1)
你可以迭代entrySet()
,它本质上是一组键值对:
int wage = 0;
String key = null;
for (Map.Entry<String, People> entry : ppl.entrySet()) {
People s = entry.getValue();
if (s instanceof Employee) {
int empWage = ((Employee) s).getWage();
if (empWage > wage) {
wage = empWage;
key = entry.getKey();
}
}
}
return key;