Adding values of two maps whenever there is a key match을보고 난 후에도 이것을 알아낼 수 없습니다. 키로 반경을 포함하고 값으로 진폭을 포함하는 다중 맵을 만들었습니다. 그러나 열쇠의 중복이 있습니다. 그래서 전체 맵을 가로 지르고 싶습니다. 중복 된 키가 있다면 해당 키의 값을 추가하고 싶습니다. 나는 그것을 새로운지도 또는 double sum에 추가하려고 시도했지만 작동시키지 못하고있다. 나는 무엇이 없는가.멀티 맵에 값을 추가하는 방법
Multimap<String, String> multimap = LinkedListMultimap.create();
for(......){
String newRad = String.valueOf(radius);
String val = String.valueOf(num);
multimap.put(newRad, val);
}
........
double s=0.00;
//java.util.Map multimap2;
Multimap<Double, Double> multimap2 = LinkedListMultimap.create();
Iterator it = multimap.entries().iterator();
while (it.hasNext()) {
Map.Entry pairs = (Map.Entry)it.next();
double currentKey = Double.parseDouble((String) pairs.getKey());
String newRad = String.valueOf(1.83);
if(multimap.containsKey(newRad)){
double values = Double.parseDouble((String) pairs.getValue());
s += values;
System.out.println(s);
}
else{
s = 0.00;
}
System.out.println(pairs.getKey() + " = " + pairs.getValue());
//it.remove(); // avoids a ConcurrentModificationException
}
그래서 기본적으로는 다음과 같이해야합니다 : 과 multimap이 포함되어 이후
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
이 (가 multimap에에 중복 키를 찾아 값을 추가해야합니다)처럼 그것이 있어야 :
1.36 = 124.0
1.35 = 127.0
1.34 = 139.0
1.33 = 59.0
UPDATE : 그래서 값을 더할 수는 있지만지도에있는 모든 값을 복제본과 함께 추가하는 것만으로는 충분하지 않다고 생각합니다. 나는 1.83에서 그것을 시도하고 7337061.0 같은 가치를 제공하고 그것은 계속 증가합니다. if 문에서 잘못된 점은 무엇입니까? 다른 이진 값은 서로 매우 가까이 할 수 있으며,이 -
어떤 멀티 맵 구현 도구를 사용하고 있습니까? –
@ user2321368 주문을 유지하기 위해 연결된 해시지도가있는 구아바 멀티 맵을 사용하고 있습니다. – selena
Multimap에 중복 키가 있다고 생각하지 않습니다. 하나의 키에 대해 여러 값 (중복 가능)이 있지만 중복 키는 아닙니다. – Eypros