2017-01-06 3 views
0

So führen Sie Division oder Multiplikation mit Map ohne Verwendung von Schlüssel und Werten durch.Der Operator * ist für die Argumentart (en) nicht definiert. Map <String, Double>, int

Im unteren Beispiel habe ich Entwickler als Kartenobjekt und möchte mit 10 multiplizieren und es einer anderen Karte zuweisen.

private Map<String, Double> Developer; 

Mit Setter, Getter-Methode für Entwickler

Map<String, Double> EmployeeVal = company.getDep().getProject().get(0).getDeveloper()*100; 

wenn ich EmployeeVal als Doppel bin decalaring seine Arbeit gut, aber ich möchte nicht das tun, ich will nur EmployeeVal als Karte erklären.

+1

Sie keine Karte von '10' oder eine beliebige Anzahl für diese Angelegenheit vermehren ... – brso05

+0

Und man kann nicht eine Zahl als' Map' Instanz zuweisen. – Guy

+0

Was erwarten Sie, wenn Sie 'Developer' mit 10 multiplizieren? Java funktioniert nicht so. Arithmetische Operationen sind nur für die primitiven Zahlentypen definiert. – hotzst

Antwort

1

Ihr Problem beginnt mit falscher Namenskonvention.

Ihr Developer-Objekt ist kein "Entwickler", sondern eine Sammlung von Doubles mit Schlüsseln als String (Namen, die ich vermute?).

Abgesehen davon, dass es besser (und Standard) ist, Variablen nicht mit Großbuchstaben beginnen zu lassen, sollte Ihre Developer-Variable wie DevelopersMap benannt werden.

Dann: Möchten Sie alle Werte für alle Entwickler mit 10 multiplizieren?

Wenn ja, machen Sie eine Schleife durch alle von ihnen und multiplizieren Werte wie:

Beispiel 1:

for (String devKey: developersMap.keySet()){    
     developersMap.put(devKey,developersMap.get(devKey) * 10.0D); 
    } 

Beispiel 2:

for (Entry<String, Double> devEntry: developersMap.entrySet()){   
     devEntry.setValue(devEntry.getValue() *10.0D);   
    } 

Aber, wenn Sie möchten Um den Wert für nur einen Entwickler zu multiplizieren, müssen Sie seinen Wert von Map by key erhalten, dann multiplizieren und in Map zurückstellen.

Als Beispiel haben Sie zwei Entwickler "John" und "Jane". für wen würdest du gern Wert vervielfältigen?

„John“:

developersMap.put("John",developersMap.get("John") * 10.0D); 
Verwandte Themen