Получение ключа объекта с наименьшим значением в hashMap
Некоторые сведения о моей проблеме: у меня есть класс сотрудников с двумя подклассами: сотрудник и клиенты. Оба класса имеют общие поля id и name. Кроме того, у класса Employee есть еще одно поле: заработная плата.
Мне нужно получить ключ hashMap объекта (тип Employee), который получил самую низкую заработную плату... В 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;
}
3 ответа
Вы можете перебрать 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;
Сначала я думаю, что вам нужны скобки, и вы должны отменить сравнение:
if ((Employee(getWage()) < wage)) {
wage = getWage();
k = getKey();
}
И, конечно, вам нужно инициализировать значение заработной платы до максимально возможного значения:
double wage = Double.MAX_VALUE;
Вы тестируете больше, чем, не меньше. Кроме того, вы должны использовать брекеты.
if ((Employee(getWage()) > wage))
wage = getWage();
k = getKey();
если вы сделаете отступ правильно
if ((Employee(getWage()) > wage))
wage = getWage();
k = getKey();
итак
if ((Employee(getWage()) < wage)) {
wage = getWage();
k = getKey();
}
должно быть то, что вы просили.