📍
【Processing】HashMapで最大/最小Valueを取得する方法
Processingでは、HashMapが用意されています。
HashMap - Reference / Processing.org
Keyは文字列で、Valueはそれぞれ文字列・整数・浮動小数点数ものがあります。
・文字列 -> StringDict
・整数 -> IntDict
・浮動小数点数 -> FloatDict
HashMapから最大/最小のValueのIndexを取得するには、maxIndex()
/minIndex()
があります。
公式リファレンスにはFloatDict
のところに書いてありますが、IntDict
でも使えます。
FloatDict - Reference / Processing.org
sample.pde
FloatDict inventory = new FloatDict();
inventory.set("coffee",108.6);
inventory.set("flour",5.8);
inventory.set("tea",8.2);
println(inventory);
// output -> FloatDict size=3 { "coffee": 108.6, "flour": 5.8, "tea": 8.2 }
println(inventory.maxIndex());
// output -> 0
println(inventory.minIndex());
// output -> 1
で、本題はIndexではなく、Value自体を取得したいのです。
maxValue()/minValue():最大/最小Valueを取得
なぜか公式リファレンスには載ってないのですが、最大/最小のValueを取得するにはmaxValue()
/minValue()
でできます。
sample.pde
FloatDict inventory = new FloatDict();
inventory.set("coffee",108.6);
inventory.set("flour",5.8);
inventory.set("tea",8.2);
println(inventory);
// output -> FloatDict size=3 { "coffee": 108.6, "flour": 5.8, "tea": 8.2 }
println(inventory.maxIndex());
// output -> 108.6
println(inventory.minIndex());
// output -> 5.8
配列ではもともとmax()
/min()
で値を取れますが、HashMapでも用意されていました。
なんで公式リファレンスに載ってないんでしょうね。
maxKey()/minKey():最大/最小ValueのKeyを取得
ついでに、最大/最小ValueのKeyを取得するにはmaxKey()
/minKey()
でできます。
sample.pde
FloatDict inventory = new FloatDict();
inventory.set("coffee",108.6);
inventory.set("flour",5.8);
inventory.set("tea",8.2);
println(inventory);
// output -> FloatDict size=3 { "coffee": 108.6, "flour": 5.8, "tea": 8.2 }
println(inventory.maxKey());
// output -> coffee
println(inventory.minKey());
// output -> flour
もちろんどちらも、IntDict
でも使えます。
Processing便利ですね。
Discussion