私はHashMapを持っており、2つの最大値を取りたいと思っています。私は次のコードを使用しました。しかし、HashMapキーが等しい場合、それは正しい値を与えません。だから、正しい値を取る方法は?JavaでHashMapキーが等しい場合、最大値を2つ取る方法
import java.util.LinkedHashMap;
import java.util.Map;
public class TakeTwoMaximumAndChange {
public static void main(String[] args) {
TakeTwoMaximumAndChange ob = new TakeTwoMaximumAndChange();
ob.test();
}
public void test() {
LinkedHashMap<String, Double> data = new LinkedHashMap<String, Double>();
data.put("a", 2.3);
data.put("b", 2.5);
data.put("c", 8.3);
data.put("d", 3.8);
data.put("c", 6.3);
data.put("f", 4.4);
Map.Entry<String, Double> max1 = null;
Map.Entry<String, Double> max2 = null;
// searching the first biggest value
for (Map.Entry<String, Double> en : data.entrySet()) {
if (max1 == null || en.getValue().compareTo(max1.getValue()) > 0) {
max1 = en;
}
}
System.out.println(max1);
// searching the second biggest value
for (Map.Entry<String, Double> en : data.entrySet()) {
if (en != max1
&& (max2 == null || (en.getValue().compareTo(max2.getValue())) > 0)) {
max2 = en;
}
}
System.out.println(max2);
}
}
'Map'は、同じキーに対して重複したマッピングを持つことはできません。 –
ok。お返事ありがとうございます。 – Emalka
しかし、Apacheの例MultiMapには、 – VLef