Получение ключа, связанного с соответствующим максимальным значением на карте (TreeMap / HashMap)
Я написал код ниже, чтобы узнать ключ (String), который имеет максимальное значение (Integer), используя TreeMap в JAVA.
public static void maxprofitItem(int[] costs, int[] prices, int[] sales,String[] items) {
TreeMap<String,Integer>map=new TreeMap<String,Integer>();
int[] profits=new int[items.length];
int maxvalue;
for(int i=0;i<items.length;i++){
profits[i]=sales[i]*prices[i]-costs[i]*sales[i];
if(profits[i]>0){
map.put(items[i],profits[i]);
}
}
Set setOfKeys = map.keySet();
Iterator iterator = setOfKeys.iterator();
while (iterator.hasNext()) {
String key = (String) iterator.next();
Integer value = (Integer)map.get(key);
System.out.println("Key: "+ key+", Value: "+ value);
}
if(!map.isEmpty()){
System.out.println("The maximum value is "+(Collections.max(map.values())));
System.out.println("And it is for");
maxvalue=Collections.max(map.values());
for (Entry<String, Integer> entry : map.entrySet()) {
if (entry.getValue()==maxvalue) {
System.out.println(entry.getKey());
break;
}
}
}
else{
System.out.println("There are no profits in this sale");
}
}
Метод maxprofitItem получает следующие параметры в качестве аргументов.
Передайте значения затрат {100,120,150,1000} Передайте значения цен {110,110,200,2000} Передайте значения продаж {20,100,50,3} Передайте значения элементов {"TV", "Видеокарта", "Внешний жесткий диск", " Монитор "}
Метод вычисляет прибыль и помещает элементы (Ключ) и прибыль (Значение) в TreeMap. И TreeMap выглядит следующим образом.
Ключ: Монитор, Значение: 3000
Ключ: внешний жесткий диск, значение: 2500
Ключ: ТВ, Значение: 200
TreeMap и HashMap размещают комбинацию ключ / значение пары таким же образом. Есть ли лучший способ использовать inorder TreeMap, чтобы узнать ключ, связанный с максимальным значением, так как он работает так же, как HashMap в этом отношении.
Заранее спасибо.