JavaでTreeMapを使用して最大値(Integer)を持つキー(String)を見つけるために、以下のコードを書いています。Map(TreeMap/HashMap)の対応する最大値に関連付けられたキーを取得
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" を値項目を渡し売上値を渡し値渡し値のコストを渡します(Key)とProfit(Value)をTreeMapに格納します。ツリーマップは、以下のようになります。
キー:モニター、値:3000
キー:外部ハードディスク、価値:2500
キー:テレビ、値:200
のTreeMapとHashMapのは、中のキー/値のペアの組み合わせを置きます同じ方法。 TreeMap inorderを使用して、この点に関してHashMapと同じ方法で動作するので、最大値を持つキーを見つけるより良い方法はありますか?
ありがとうございます。
はいそれは私のquestion.Iは、上記のシナリオごとに異なるツリーマップを使用して知りたいと思った、最大値への鍵が得られます。 – nikthecamel