Это расширение моего предыдущего вопроса Как добавить значения в мультикарту
Мне удалось добавить значения в мультикарту, но проблема в том, что когда она находит повторяющиеся ключи, она должна добавлять значения, соответствующие своим ключам. Затем, как только текущий ключ изменится на другой номер, он должен сделать сумму = 0,00, а затем начать снова с другим дублирующимся номером ключа. В следующем коде я не знаю, где сделать сумму = 0,00 и где напечатать значение, поэтому он выводит только ключ с суммированным значением.
Вот код (ОБНОВЛЕННЫЙ КОД):
// create a Map()
Map<String, String> readValuemap = new LinkedHashMap<String,String>();
String val = null;
for(int i =0; i< 256;i++){
for(int y=0; y< 256; y++){
//reading in the values.
String x = image.getLocationAsString(i, y);
String n = image.getValueAsString(i, y);
//Parsing them into "key" and "value".
String delim = ", value=";
String [] tokens = n.split(delim);
double num = Double.parseDouble(tokens[1]);
String stringNum = String.valueOf(num);
String [] t = x.split("r=");
String[] b = t[1].split(" mm/c");
//System.out.print("Meet b: "+b[0]);
double radius = Double.parseDouble(b[0]);
String stringRad = String.valueOf(radius);
//System.out.println("The radius: "+radius);
//retrieve the current value for the key from the map.
val = readValuemap.get(radius);
System.out.println(val);
//if null, just put the value into the map.
if(val == null){
readValuemap.put(stringRad, stringNum);
System.out.println("new if; "+val);
}
else{
//if not null, add the current value to the new value (the one that you just read in)
//and store the sum in the map.
double v = Double.parseDouble(val);
v += num;
String newValue = String.valueOf(v);
System.out.println("new value; "+newValue);
readValuemap.put(stringRad, newValue);
}
}
}
System.out.println("-------------Printing out the values----------------");
Iterator iter = readValuemap.entrySet().iterator();
while(iter.hasNext()){
Map.Entry pairs = (Map.Entry)iter.next();
System.out.println(pairs.getKey() + " = "+ pairs.getValue());
}
Так что в основном это должно быть так: мультимап содержит:
1.36 = 59.0
1.36 = 65.0
1.35 = 56.0
1.35 = 71.0
1.34 = 64.0
1.34 = 75.0
1.33 = 59.0
После этого должно получиться так (он должен найти дублирующиеся ключи в мультикарте и добавить значения):
1.36 = 124.0
1.35 = 127.0
1.34 = 139.0
1.33 = 59.0
Напишите сейчас, это просто добавление всех значений независимо от того, является ли ключ дубликатом или нет.